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

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。

 

 

 

Google Glass已死,智能眼镜长存! 五个步骤,保护移动应用免受恶意攻击 声波改变移动社交——参加联想“茄子快传”创意征集 赢取平板电脑大奖! 车载硬件Baen:被游戏化的驾驶体验 深入解析Docker背后的namespace技术 响应苹果要求:Qt 5.4、Qt Creator 3.3同迎RC版 击碎泡沫谈发展,盘点OpenStack商业生态圈! 2014年11月操作系统份额:Windows 7雄居第一,XP跌新低 微信开放平台上线统计报表功能 【向导】如何开始学习高伸缩性编程? 基于Apache Samza,揭秘LinkedIn架构背后的技术 Aeron:每秒可以传递数百万消息的低延时开源消息系统 英特尔物联网马拉松:用创造力改变生活 年末总结:2014年全球手游市场发展的六大趋势 Saber——模块化、组合式的移动前端框架 什么仇什么怨?还原日本反美颜应用Primo真面目 横跨2D与3D!专属C#开发者的超强游戏引擎Paradox 首份“2014年移动外语学习行业报告”等你下载 《近匠》Ayla联合创始人张南雄:物联网发展的三个阶段 神器 VisuAlgo:通过动画学习算法和数据结构 【工具推荐】QWrap——开源的前端JavaScript框架 老外看中国:移动应用UI设计的十大精髓 HTML5正名记:两家机构的博弈与一种标准的诞生 电池技术为何停滞不前?革新技术尚未出现 如何设计优雅的移动游戏? 前方高能!盘点2014年最颠覆三观的智能硬件 俄罗斯当局封杀GitHub,理由是教唆自杀 裁员110人、关闭工作室,Rovio重组求出路! 全Swift开发、代码开源!有钳的Firefox for iOS 详解开源游戏开发框架HaxePunk的主要特性 《程序员》杂志休刊通知 高分求助软件稳定性问题! 高分请教exej4的问题!~ 我的代码可以被编译吗? 十万火急(在线等)关于发邮件问题!多谢了(最后50分了) 感谢各位的鼎力支持!!! 急:如何让sqlload使用命令行方式,把数据库中的指定几个表导出?(在线) 单元全局变量与工程全局变量有什么区别 问一个关于JSP和XML结合的问题. 请问怎样用ASP连接Mysql数据库,急! 有没有j2ee的qq群??? win2k里的smtp服务器,怎么是需要身份验证的? 怎样让智能ABC记住输入的词组呢? 你在delphi中,用到了多少面向对象的知识? Dragover事件什么情况下触发 北京还是深圳 如何实现两个类互相访问--急! <Code Complete>怎么翻译好呢? 急!!!!!在dcom中向数据源添加数据报错,为什么? 有哪些方法可以在ASP.NET设计文件.aspx(html格式WEB)与脚本文件.aspx.cs(.aspx.vb)中传递数,或者说传递变量的值!!! 我用CDONTS.NewMail发邮件,怎么判断邮件发送成功或者是不成功呢? asp.net的客户端键盘的事件处理的有关问题? 请问怎么在程序里随机产生CLSID代码?$$$$$$$$$$$$$$$$ 急! 如何定义一个全局的类的实例,请高手指招? 到底怎么创建桌面快捷方式? 给点参考吧! ADO连接带密码的数据库时出现的错误!!! (在线求助),哪位老大知道怎样写一个字符串在一个iframe内框架里? zzxxdd过来接分? 刚才没说清楚再问一下救急 allforly(白衣胜血) 请进,其他人解答也可以。 windows 2003 关于fso问题,求救! 请问通过表单上传文件是否有大小限制? 关于函数的返回类型 JavaScript在使用showModalDialog的问题,急!!!!!! 急!datagrid中的Checkbox问题? 各位仁兄:在Redhet8下为什莫打开中文pdf文档是乱码?下弟在此先谢过了。 请提供北京招聘信息(java方面)。毕业三年了,一直在一个公司里面工作,昨天辞职了,现正是开始重新找工作。 win2k服务器问题,请大家帮忙解决! asp生成excel文件的问题!! 出一个程序员需要做的智力题,也来让大家头痛一下。 可以上qq,不可打开网页,这是为什么?主机为server2000,其他电脑有的可一打开 如何得到DataReader的字段的名字 请教C++通用排序程序 報表打印的問題 关于dbcombobox的问题? 又一个MDI的问题 高手进来看看这段程序有哪些错误? 使用resultset 在stringbuffer里面替换文件里所有的字 关于使用WM_DATACOPY这个消息? 关于弹出窗口广告页面设计的问题????????(小弟刚入门,多多指点) 高手快进!打包问题!看看也有分! 如何评价严嵩? 英语翻译 1.北京是中国的首都 2.他写了40多部华尔兹 3.许多人说他是欧洲最伟大的作曲家急用 我想到广场上卖氢气球,请问氢气球里面的氢气怎么充气,安全不安全啊?怎么充气才安全呢? java编程题,编写程序,提供实现各种数学计算的方法,并调用这些方法进行计算,包括如下几项:1:两个数的乘、除:2求某数的相反数、倒数、绝对值. 人是猴子变的,那为什么现在还有猴子没变成人呢? led角度和照射距离led投光灯角度可以分多少种、一般的距离能有多远.最大瓦数照射距离是多远 请问什么叫确定无穷小的阶 绿光经过蓝玻璃后是什么色? 求“序”的知识,如《送东阳马生序》的“序” 什么叫高阶无穷小?什么叫低阶无穷小?o﹙Δx﹚为什么叫高阶无穷小而不叫叫低阶无穷小? 类胡萝卜素只要吸收蓝紫光 有吸收绿光吗?为什么显橙黄色不显绿色? 皮皮鲁的风筝续写800字的不要我们书上有的不懂的不写 已知一个向量线段A,一个向量线段B.A大于B,两个向量的方向相同.我不知道该怎么作图了..我只为做相反方向的,就是两个起点放在一起,可方向一样怎么办额, 在等腰三角形ABC的斜边AB上任取一点M,则∠ACM≤30°的概率为多少. 送东阳马生序 求语文学霸 说一个人,做人做事都很执着, 求向量减法 .so easy``用一个棱长是12厘米饿正方体木块加工一个最大的圆锥,圆锥的体积是多少立方厘米? 严嵩的儿子是怎么死的啊?听说是中毒 矢量减法我是新高一的,有个向心加速度公式的推导,其中有个匀速圆周运动的两个瞬时速度减法,我不能理解,望学长们老师们帮我解释一下,最好有图啊!(我能理共点力合成分解时的平行四边 向量的数量积为什么不满足结合律? 严嵩怎么死的 生产要素和生产资料有什么不同?如题,资本、土地、劳动力和机器工厂等等,算生产资料还是生产要素? 4个向量数量积结合律满足吗? 已知三点坐标为A(5,-1),B(-2,3),C(3,1),△ABC内任意一点P(x,y)经过平移后,P点对应的点P`的坐P点对应的点P`的坐标为(x-4,y+2),请说明此图形是怎样平移的,平移后得到△A`B`C`的三个顶点的 生产资料和生产要素之间是什么关系? 氢气球是什么时候发明的?具体点... my happy school 歌词跟视频上的英文要相符! AO是具有一定质量的均匀细杆,可绕O点在竖直平面内自由转动.细杆上的P点与放在水平桌面上的圆柱体接触,圆柱体靠在竖直的挡板上而保持平衡.已知杆的倾角为60度,圆柱体的重力大小为G,竖直 【数学】向量的数量积在哪些特殊情况下满足结合律我只知道a·(b·c)=(a·b)·c在三个向量都为零向量时成立.请问还有其它情况吗? 已知三点坐标为A(5,-1),B(-2,3),C(3,1),△ABC内任意一点P(x,y)经过平移后,P点对应的点P`的P点对应的点P`的坐标为(x-4,y+2),请说明此图形是怎样平移的,平移后得到△A`B`C`的三个顶点的坐 劳动者创造的价值包括可变资本价值和剩余价值,其中资本家支付的是劳动者的工资也就是可变资本价值,剩余价值被资本家无偿占有,不变资本只是由一种形态转化到新的商品中去了,以上纯属 韩非子怎么样 儿童英语歌 My Happy School 歌词 资本家为什么增加可变资本总量是不是意味劳动力增加,创造的剩余价值也增加 等于多少(要过程) 严嵩介绍. 为什么历史上著名的伟大的作曲家大多在欧洲? 函数的极值点为什么不能是区间的端点?书上说:函数f(x)在(a,b)可导,为什么只能是开区间而不是闭区间呢? 关于严嵩严嵩无他才略,惟一意媚上,窃权罔利,专擅国政近20年.士大夫侧目屏息,不肖者奔走其门,行贿者络绎不绝.戕害他人以成已私,并大力排除异已.他还吞没军饷,废弛边防,招权纳贿,肆行贪 我在一个出租脚手架的店子里看到很多木板,这是什么板子?是三层板?干什么用的?和普通木板比有什么特点?我最近需要木板来做小部件,使用在一个生活创意里的,我要把木板锯成我需要的 Je dois faire une course.Attends-moi au café,j’en ai pour dix minutes.请问这里en代替的是什么?没有看见那里有de啊? 一个圆柱的底面半径扩大到原来的3倍,高不变,它的侧面积会扩大到原来的几倍,体积会扩大到原来的几倍? 两个圆柱的底面半径之比为2比3,高之比是1比2他们的侧面积之比是多少?体积之比是多少? Je Suis Venu Te Dire Que Je M En Vais (Live Au Palace 2009) 歌词 圆柱的底面半径扩大2倍,高扩大3倍,他的侧面积会扩大()倍,体积会扩大()倍如题, 韩非子的名、字、号. je crois que je vais aller bien faire les grands progres pour mes etudes!不只是哪国语言,希望会的朋友帮我翻译以下, 形容女人爱讲闲话的骂人词语 韩非子是名字吗 Je sais bien que je devrai affronter toutes sortes de difficultés,je vais faire tous mes efforts 形容一个人经常告别人状的词语,就是可以骂他的那种 两个圆柱的底面半径之比是2:3高之比是1:2,它们的侧面积之比是多少?体积之比是多少? 一个圆柱的底面半径扩大3倍,高不变,底面周长扩大()倍,侧面积扩大()倍,底面积扩大()倍,体积扩 我对定积分是一知半解,什么是定积分,它该怎么求? 既能使石蕊试液变红,又能使品红试液变为无色的物质是什么? 圆柱的底面半径扩大3倍,高不变,底面周长扩大()倍,侧面积扩大()倍,底面积扩大()倍,体积扩大()倍 已知1/x-1/y=3,则{2x-14xy-2y}/{x-2xy-y}的值为多少 既能使石蕊溶液最终变为红色,又能使品红试液变为无色的物质是 A.N H 3.B.既能使石蕊溶液最终变为红色,又能使品红试液变为无色的物质是A.N H 3.B.H C l.C.SO2.D.CO2但我觉得盐酸和二氧化碳也可以 韩非子是谁? 记李克强“东南亚之行”:中国加强与东中国全民教育进展赢得国际认可中国民企在希腊签下近4亿欧元医药大单IMF警告巴西财政体系风险澳大利亚蓝山火情缓解 居民返家解救被沙特暗示拒任“非常”是针对美国 恐与沙特再拒入“非常” 指安理会未实现中美医学杂志报告显示 感染艾滋病毒婴儿韩纪念馆:日战败后所绘地图中不含日韩英一新郎忘预约教堂 为遮丑谎称有炸弹英一“大学”批准小狗入学 缴费即获硕泰国咖啡摊主因招牌与星巴克标志雷同被多家银行因抵押贷款支持证券销售被美司日本进入胖女时代 专家称或因对瘦人审日本导弹部队将现身宫古岛 拟搞大规模英国一新郎忘预约教堂 为遮丑谎称有炸韩纪念馆:日战败后所绘地图中不含日韩美媒称中国教改“打压”英语不代表西方俄外长:俄美涉叙计划表明双方有能力应姚贝娜侯磊同入酒店疑似姐弟恋泰国北部发生重大交通事故 造成22人10月“气质”泉州最佳三明最差郑州加强城区交通秩序治理 缓解道路交全省职工养老保险新增45.2万人福安名片15家4A级景区被行业通报摘牌公车违章不能让纳税人埋单郑州市发改委下放投资备案权 激发市场瑞祥大街北延工程部分快车道通车长青楼的“长青术”“限牌”提前公告符合法治精神俞志银举办出国金融业务培训“无烟村庄”正向我们走来为62户困难群众修缮或翻建住房福建主场止连败全省海防工作会议在榕召开养老地产发展举步维艰全国最大单细胞种苗繁育中心投入试生产向机制要生态美期待众筹购房模式走好走远新能源汽车推广计划仅完成11.5%6
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘