说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android编程之实现GPS定位

HTML文档下载 WORD文档下载 PDF文档下载
曾几何时,手机开发联盟推出自己的Android手机雏形时,受到了极大的追捧。Google为了鼓励开发人员来开发Android手机的应用程序,提供了1千万美金来奖励那些在Android开发中的获奖者。当然,本文并不是告诉读者如何去赢得大奖,而是帮助读者理解如何使用Android SDK来开发Android程序,其中包括如何使用XML布局来显示广西,从GPS组件中获得设备的位置等,在本文的最后将学习如

 

曾几何时,手机开发联盟推出自己的Android手机雏形时,受到了极大的追捧。Google为了鼓励开发人员来开发Android手机的应用程序,提供了1千万美金来奖励那些在Android开发中的获奖者。当然,本文并不是告诉读者如何去赢得大奖,而是帮助读者理解如何使用Android SDK来开发Android程序,其中包括如何使用XML布局来显示广西,从GPS组件中获得设备的位置等,在本文的最后将学习如何将文本显示在一个定制的视图上。
    一、准备工作
    要想开发Android程序,我们需要如下三种软件:
    1. Eclipse
    2. Android SDK
    3. 开发Android程序的Eclipse 插件
    为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。
    二、Activity类
    每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编写Android程序。下面是一个简单的继承Activity的例子。 引用:

 

曾几何时,手机开发联盟推出自己的Android手机雏形时,受到了极大的追捧。Google为了鼓励开发人员来开发Android手机的应用程序,提供了1千万美金来奖励那些在Android开发中的获奖者。当然,本文并不是告诉读者如何去赢得大奖,而是帮助读者理解如何使用Android SDK来开发Android程序,其中包括如何使用XML布局来显示广西,从GPS组件中获得设备的位置等,在本文的最后将学习如何将文本显示在一个定制的视图上。

一、准备工作

    要想开发Android程序,我们需要如下三种软件:

    1. Eclipse

    2. Android SDK

    3. 开发Android程序的Eclipse 插件

 

    为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。

二、Activity类

    每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编写Android程序。下面是一个简单的继承Activity的例子。 引用:

 

public class LocateMe extends Activity{public void onCreate(Bundle params){super.onCreate(params);setContentView(R.layout.main);}public boolean onKeyDown(int keyCode, KeyEvent event){return true;}
在上面程序中的onCreate方法将在应用程序第一次开始时调用。Bundle对象包含了任何用于建立参数或环境数据所需要的基本信息。 Activity可以是全屏的,或是悬浮的。它们可以是嵌套的,但是每一部分基本是独立的。那么,也许有人会问,setContentView是做什么的呢?
三 View类
    View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用来进行任意扩展。本文为了方便起见,只涉及到了两个主要的View类型:定义View和Android的XML内容View。在上面的代码中,使用的是 “Hello World” XML View,它是以非常自然的方式开始的。
    如果我们查看一下新的Android工程,就会发现一个叫main.xml的文件。在这个文件中,通过一个简单的XML文件,描述了一个屏幕的布局。这个简单的xml文件的内容如下: 引用:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_centerHorizontal="true"    android:text="Press the center key to locate yourself"    /></RelativeLayout>
上面的内容的功能看起来非常明显。这个特殊文件定义了一个相关的布局,这就意味着通过一个元素到另一个元素的关系或是它们父元素的关系来描述。对于视图来说,有一些用于布局的方法,但是在本文中只关注于上述的xml文件。
    RealtiveLayout中包含了一个填充整个屏幕的文本框(也就是我们的LocateMe activity)。这个LocateMe activity在默认情况下是全屏的,因此,文本框将继承这个属性,并且文本框将在屏幕的左上角显示。另外,必须为这个XML文件设置一个引用数,以便 Android可以在源代码中找到它。在默认情况下,这些引用数被保存在R.java中,代码如下: 引用:
public final class R{public static final class layout{public static final int main=0x7f030001;}}
视图也可以被嵌套,但和J2ME不同,我们可以将定制的视图和Android团队发布的Widgets一起使用。在J2ME中,开发人员被迫选择 GameCanvas和J2ME应用程序画布。这就意味着如果我们想要一个定制的效果,就必须在GameCanvas上重新设计我们所有的widget。 Android还不仅仅是这些,视图类型也可以混合使用。Android还带了一个widget库,这个类库包括了滚动条,文本实体,进度条以及其他很多控件。这些标准的widget可以被重载或被按着我们的习惯定制。现在让我们来进入我们的例子。 
四、Android实例
    这个演示应用程序将演示了用户的当前的经度和纬度(在文本框中显示)。onCreate构造方法将和上面的例子基本相同,除了在其中加入了键盘处理,现在让我们看一下onKeyDown的代码。 引用:
public boolean onKeyDown(int keyCode, KeyEvent event){if(keyCode != KeyEvent.KEYCODE_DPAD_CENTER || m_bLoading){return true;}m_bLoading = true;getLocation();return true;}
下面让我们来解释一下这段代码,首先,这段代码检查了当前被按下的键,但还没有开始处理。而是在getLocation方法中处理这一切的。然后,将装载flag标志以及调用getLocation方法,下面是getLocation方法的代码。
private void getLocation(){Location loc;LocationManager locMan;LocationProvider locPro;List<LocationProvider> proList;setContentView(R.layout.laoding);locMan = (LocationManager) getSystemService(LOCATION_SERVICE);proList = locMan.getProviders();locPro = proList.get(0);loc = locMan.getCurrentLocation(locPro.getName());Lat =  (float)loc.getLatitude();Lon =  (float)loc.getLongitude();CreateView();setContentView(customView);}
到这为止,程序开始变得更有趣了。但是不幸的是,Google关于之方面的文档还是比较少了。在程序的变量声明之后,我们需要演示一些装载信息。 R.layout.loading符合了另一个简单的XML布局视图。通过简单地调用setContentView方法可以使用转载信息重绘屏幕。
    读者要注意的是:在编译时,Android会预先将所有的XML布局数据包装起来。如果我们想在编译后变化布局属性,按着规定,我们必须在源程序中做这些事。
     获得LocationManager的唯一方法是通过getSystemService()方法的调用。通过使用LocationManager,我们可以获得一个位置提供者的列表。在一个真实的手持设备中,这个列表包含了一些GPS服务。实际上,我们希望选择更强大,更精确,最后不带有其他附加服务的 GPS。现在,在模拟器中提供了一个用于测试的GPS,这个GPS来自San Francisco。定制的GPS文件可以可以被上传,并进行测试。如果我们要测试更复杂的应用,来自San Francisco的GPS可能并不适合。
    目前我们可以使用位置管理器和位置提供者进行getCurrentLocation的调用。这个方法返回本机的当前位置的一个快照,这个快照将以 Location对象形式提供。在手持设备中,我们可以获得当前位置的经度和纬度。现在,使用这个虚拟的手持设备,我们可以获得这个例子程序的最终结果:建立了显示一个定制的视图。 
五、使用定制视图
    在最简单的窗体中,一个Android中的视图仅仅需要重载一个onDraw方法。定制视图可以是复杂的3D实现或是非常简单的文本形式。下面的CreateView方法列出了上面看到的内容。 引用:
public void CreateView(){customView = new CustomView(this);}
这个方法简单地调用了CustomView对象的构造方法。CustomView类的定义如下: 引用:
public class CustomView extends View{LocateMe overlord;public CustomView(LocateMe pCtx){super(pCtx);overlord = pCtx;}public void onDraw(Canvas cvs){Paint p = new Paint();String sLat = "Latitude: " + overlord.getLat();String sLon = "Longitude: " + overlord.getLon();cvs.drawText(sLat , 32, 32, p);cvs.drawText(sLon, 32, 44, p);}}
这个定制的Android视图获得了经度和违度的测试数据,并将这些数据显示在屏幕上。这要求一个指向LocateMe的指针,Activity类是整个应用程序的核心。它的两个方法是构造方法和onDraw方法。这个构造方法调用了超类的构造方法以及引起了Activity指针的中断。onDraw方法将建立一个新的Paint对象(这个对象封装了颜色、透明度以及其他的主题信息),这个对象将会访问颜色主题。在本程序中,安装了用于显示的字符串,并使用画布指针将它们画到屏幕上。这个和我们了解的J2ME游戏的画布看起来非常类似。
六、Android展望
    从纯粹的开发观点看,Android是一个非常强大的SDK。它使用基于XML的布局和定制视图联合了起来。并可以使用滚动条、地图以及其他的组件。所以的这一切都可以被重载,或由开发人员来定制。但它所提供的文档非常粗糙。在文档中并没有象SMS等技术,但是从整体上来看Android SDK,还是非常有希望的。也非常符合Google承诺的“First Look”SDK。

 

 

 

DevBox:最实用的移动开发辅助工具包 【技术博客推荐】创客程序员设计实现最小物联网系统 MySQL还是NoSQL:开源盛世下的数据库该如何选择 利用Hadoop Streaming处理二进制格式文件 如果没有强大的API,那么还是与OpenStack兼容吧 企业社交工具为何走向衰退? 封闭还是开放?雅虎禁止用户使用Facebook、谷歌ID登录和使用其服务 【OSTC讲师专访】罗聪翼:付出和回报在开源世界成正比 近匠:“词Ci”——全栈“女神”如何诠释倾城之美 国内首届引擎黑客松Cocos2d-x Hackathon即将开赛! 抛弃CloudStack,GoDaddy加入OpenStack PaaS平台之争:Cloud Foundry是赢家吗? 投资超140亿美元,涨幅达30%,数据密集型应用将占领第三平台 汽车开放平台:看看通用汽车是怎么做API的 Gamebase将推全新跨平台3D游戏引擎Reach3dx 借助API Telegram能否成为第二个WhatsApp 机器学习也感性:90后软妹纸的编程之路 为安防与视频监控而生 西数紫盘首发 秘闻:鲍尔默离职,或与坚持收购诺基亚有关 【OSTC讲师专访】Thomas Yao:开源社区最缺有能力的领导者 对比MySQL,你究竟在什么时候更需要MongoDB 不以“大小”论英雄,对比IBM、AWS,谁才是Hadoop界的MVP? 参加“我们都用JIRA”视频征集大赛 赢取乐视TV超级电视 开发者下一个待开发市场:印度 一周消息树:80%开发者背井离乡,70%经常加班 移动周报:最受欢迎的跨平台开发工具推荐 研发周报:Mt.Gox破产,都是错误编程惹的祸 数据挖掘+人工智能,教育定制化下的学霸量产 通过700合作伙伴的进一步细分,Google变得越来越像微软 一周热点:高薪必备:Hadoop求职者的6大攻略 谷歌Android主管:两周内为开发者推出可穿戴设备SDK 全新安装的redhat 7.2为什么启动kde后不能打开Konqueroer浏览器和主目录 研究生在毕业时真的比本科生有优势吗? 请教:谁知道自动控制原理根轨迹乃试图。。,的算法? 我的AOUTOCAD总装不上??? 爱恋是什么东西?是好人就来看!!! 新闻组(NNTP)怎么用? 为何我用 Delphi写的 MDI Child Window关闭后无法打开? 为什么这样画不行呢? 语句char a='\72'则变量a包含几个字符 急,不难的问题(有代码) 问一个幼稚的问题,delphi6.0分为那几个版本,你们都用的哪一个。 呵呵,下网了,今天捞了150多的专家分,太少了~~,明天在我星期5发布的帖子里给大家分,每个人大概都有10分左右吧~~ 请问各位,现在什么版本的LIUX比较好,你们一般用那种? 快毕业了才心动!怎么办? 为什么我的可用分越来越少,参与分加得少,怎么回事啊 快毕业了才心动,怎么办? 有什么办法可以加快ACCESS的速度 快毕业了才心动~怎么办? 请问设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值是多少? 我下载了tinyDB 2.8,需要注册怎么办? 高价寻求软件开发(5000.00元报酬) 网页填写提交表单时经常出现停顿,怎么回事? 111高价寻求软件开发(5000.00元报酬) 各位大虾,深圳那儿买书可以打折? putao请进 双服务器的网络连接问题,请进来看看。 pb7的exe连接sql server2000真难呀,我都弄了两周了!!!!!!!!!!还没解决!!!!??? 怎样响应鼠标在对话框上画图啊? 怎样访问局域网内的机器? asp+sql的查询! 有关MIDAS的问题,请看http://www.csdn.net/expert/topic/374/374719.shtm 紧急!!如何使用ADO创建数据库及表(zwjmouse) 哪位大侠能提供一个c语言写的俄罗斯方块的有注释的源程序(高分) 一段可以冒充QQ上线,下线的源代码,支持最新版0710B 有关于Delphi开发局域网数据库系统的书籍或者资料吗? 请问由mscomm发出的数据是什么格式,单片机怎么识别?》》》 求教??? 请问是否有快速建立二叉树的方法 请教确认提交页面部题 Cannot open "Javac.exe"--菜鸟问题 请问怎么样实现Date的加减呢?? 怎样得到下一天的日期 前段时间出差,最近有忙着考研,没时间上网,散分 确认页面问题。 AfxMessageBox话框标题问题 不是我重复,只是这个问题让我发疯,旦求解决这个问题,死而无怨 smtp认证发信的源代码 在DLL中如何知道自己父进程(ParentProcess)的路径和文件名? cview里的precreatewindow和cframewnd的precreatewindow应该调用那个? 如何在dw4中给已做好的FLASH动画加上超链接? 关于Jmail组件的问题! 在包装上写 kg与kgs都有,究竟哪一个标准? 分数次方一问:x的m分之n次方就是x的n次方再开m次根,可不可以先开方再乘方?原因? 两个圆的直径分别为4分米和2分米,它们的半径比是(),周长比是(),面积比是() 50 gallons?50 gallon?10 kg?10 kgs?哪个对? 单位km是什么意思 两个圆的半径分别是3分米和4分米, 这两个圆直径比是(),周长比是(),面积比是()在线等 2009五年级下册语文期末试卷 km 是什么单位 1.分解因式:5a^n+1-10a^n= 2.3^2012-4×3^2011+10×3^2010能被7整除吗?为什么?请尽快!很急,明天要交作业了! 2009年五年级下册语文期末试卷要2009年的 KM是什么单位名称? 【分解因式】3^2011-3^2010-3^2009能被5整除吗?为什么? Word文档:10的5次方怎样打? 25度时,100ml 0.4mol/L的盐酸与等体积0.6mol/L的NaOH溶液混合后,溶液的PH值等于多少 3^2012-4*3^2011+10*3^2010能否被7整除. 2009年语文五年级下册期末试卷急死人了! KM/H 是什么单位?是 公里/小时 用0.1mol/L的NaOH溶液滴定100ml0.1mol/L的HCl时.如果滴定误差在±0.1%以内,反应完毕后溶液的pH范围是?(已知lg2=0.3) 把一个圆平均分成若干等份后,拼成一个周长为20.7分米的长方形,这个圆的面积是多少平方分米? 在25℃时,100ml 0.6mol/L的盐酸与等体积0.4mol/L的氢氧化钠溶液混合后,溶液的pH值等于多少? 一个半径是5分米的圆,如果半径增加1分米,那么周长增加( )厘米,面积增加(一个半径是5分米的圆,如果半径增加1分米,那么周长增加( )厘米,面积增加( )平方分米. 填空;2.75L=【 】ml 0.45L=【 】ml 84ml=【 】L 若用1MOL/L的H2SO4滴定1MOL/L的NAOH溶液10ML时,在滴定的过程中出现误差,如1(多滴定了1滴H2SO4溶液注约0.5ML),2(少滴定了一滴H2SO4溶液)等溶液充分的反应后,两溶液的氢离子浓度之比为多少? 一个圆的半径是3分米,如果半径增加1分米,则周长增加多少分米,面积增加多少平方分米拜托各位大神 填空200ml=几L200ml=( )L 室温下用0.1mol/L氢氧化钠溶液分别滴定20毫升0.1mol/L的盐酸和醋酸下列说法正确的是V(NaOH)=10ml,c(CH3COO-)/c(CH3COOH)大于1V(NaOH)=20ml,c(Cl-)小于c(CH3COO-)图中A点(黄色)与B点的意义是 kg.n是什么单位 2009朝阳市五年级下学期语文期末试卷答案求2009朝阳市五年级下册语文期末试卷答案 求大神指导.浓度为0.1mol/l的氢氧化钠滴定同浓度一元弱酸HB,(pka=4.0)误差正负0.1%ph突越7.0-9.7,若弱酸pka3.0,则突越范围为……求指导求指导…… kg/(kW·h)是什么意思这是油耗单位 word中怎么输入x的m次方平方m在x的右上面,然后2在m的右上面 怎样配制氢氧化钠标准滴定溶液c=0.1mol/L 有没有规范单位表示方面的标准?比如千克用kg,千瓦用开kW. 2011苏教版五年级下册语文期末试卷的作文是什么啊? kgs是什么单位 五年级上册英语期末试卷的答案 苏教版五年级下册语文期末试卷作文直接给我发上作文题目和内容 磁感应强度的单位KGS/A与T之间怎么转换?KGS/A 是 千高斯/安 ,我以前都不知道磁感应强度还有这个单位的. 五年级上册英语期末试卷和答案 苏教版 2009 word中a的2次方要是想在2下面再打个2该怎么打就是在a的右上角和右下角同时打上2,怎么打 如果一个圆的半径由1分米增加到3分米,它的周长要增加( )分米,面积要增加( )平方分米, 苏教版五年级下册语文期末试卷会考什么作文 2的x次方怎么打?是x的次方 HCL溶液与NaOH溶液(0.1mol/L)相互滴定的pH突跃范围是多少?HCL溶液与NaOH溶液(0.1mol/L)相互滴定的pH图余额范围是多少?如果要求终点误差不超过0.2%,甲基橙和酚酞是否都可用作指示剂? 我想知道KGS是什么意思?我听说KGS是复数形式,如果是这样的话,那:净重:6KGS毛重:11KG,这样不是不对称了吗?我写的数字是以公斤计算的 我要2009至2010年的8年纪语文期末试卷答案 体重用kg做单位还是用N作单位.. 关于KGS的问题10KG可以换算到多少KGS!好象KGS是什么KG的复数! 语文S版2009年-2010年四年级上册期末试卷,请问谁有? 2011年小学六年级语文上册期末试卷 如何在Word中输入几次方的数字? 有4gNa2O2和Na2CO3的混合物溶于水,与100ml物质的量浓度为1mol/L的盐酸恰好完全反应,蒸干溶液,最终得到固体的质量为? 例如:50ml 1mol/l NAOH溶液中的1mol代表什么?RT Word里平方米就是M的2次方怎么打出来? 在A、B、C、D四个烧杯内分别放入0.1mol的钠、氧化钠、过氧化钠、氢氧化钠,然后各加入100ml水,搅拌使固体完全溶解,则A、B、C、D的质量分数大小顺序为:为什么是D 不溶于水的实心球重12N,体积为1.5dm²,若把它轻轻地放入足够大且装满了水的桶里,求:(g取10N/kg)(1)球受到的浮力的大小(2)从桶中溢出的水的质量的大小 WORD里10的负几次方怎么打? 有8g过氧化钠,氧化钠,碳酸钠,氢氧化钠的混合物与200g质量分数为3.68%的盐酸恰好完全反应,蒸干溶液,最- -,怎么变成这样了,算了, 把重为10N、体积为1.2dm³的空心铅球,轻轻地放入水中,铅球静止后受到的浮力多大?(g取10N/kg)如题.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn