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

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。

 

 

 

自己编程模拟 MouseEnter,MouseExit 事件 -VB资料 走进VB6啃一块骨头 做成一个时间限制的测试版 -VB资料 PHP中利用jQuery实现SWF图像上传和裁剪 VB.NET或C#将DataSet快速导出到Excel中 HashSet的equals和hashCode重写问题 PendingIntent实现原理和代码 IntentService实现原理及内部代码 AsyncTask实现原理和内部代码 Neither user nor current process错误 ListView的右边滚动滑块启用方法 Live Wallpaper动态壁纸开发 控制软键盘显示和隐藏 设置Activity大小不再全屏原理 Android面试题,看看你基础如何? Android Canvas绘图抗锯齿解决方法 Android xliff和字符串资源 android.hardware.USB类介绍 Android开发经验谈之应用间数据共享 android_asset这个URL详细使用方法 Android 2.3系统自带高清UI图标下载 设置ScrollView滚动条的颜色 WakeLock使用方法示例代码 Concurrent并发库常见问题总结 Android数据库SQLite性能优化技巧 Android开发之Java设计模式基础篇 Android开发之Java设计模式入门篇 Android开发之Java设计模式 Android开发之Java并发包集合类性能分析 Android开发之Java集合类性能分析 Android开发之Java虚拟机原理和内存分配 在BEAN中,System.out.println("yyy")为什么不能输出呀? 局域网接ADSL,如何限制用户上互联网? 如何不安装oracle的客户端用来连接服务器上的oracle数据库 请问哪有VC关于ADO编程的书籍下载? 关于组件的问题? 用DAO连接数据库,在我的机器上运行没问题,但在其它机器上一运行就挂 谁能告我liulee的个人网页地址呀?? 关于在浏览器中直接运行VB程序的问题 十万火急,我遇上两个奇怪的问题。答者重谢。 请问:如何使用toString? 各位,期待已久的简单任务来了!又是100分!(SQL Server 2000) 好累啊,想放弃了,但又无法回头! Java中,Inner class可不可以使用final修饰符? 谁能告我liulee的个人网页地址呀??急 请教如何在程序运行时修改dbgrid控件options属性中的关于多选控制和整行选择的两个属性? 请推荐UNIX方面的书籍 如何使用toString()方法,谢谢 菜鸟系列:一个简单的编译错误,但我不明白!救命啊!!!! 这就是标准?SJ/T11234 SJ/T11235培训纪实 在哪里看我现在linux系统中用的应用软件的版本号?比如wu-ftp sendmail等等! 操作系统版本不同问题 BCB下怎么调用WINDOWS API函数,急 cpu风扇不转的问题…… 游戏开发的高手或者3维建模的高手,是怎样开发人物模型的呢? 今天下午有没有去微软发布会的????马上回答 关于字体问题!请教会者不难者!!!!!!!! 請問怎麼定義小一點得符點數???? ReadFile超时返回什么? 我的机器装了2000server,2000profession 和NT4.0,现在机器空间不够想把nt4.0和2000profession 卸载,请问应该如何进行?? 怎样用PB代码实现在MDI窗口里的 Ctrl + Tab 的功能 ? 如何将静态库加入项目中,有头文件,SETING出也加入,为何说和系统的库重复定义 如何调用非mfc的程序调用mfc下开发的动态连接库, 请问谁有监测图片变化的部分代码?(在线等待) GetCurrentDirectory()?? 用ADo更新图片(bmp,jpg)难道只能将原来的数据记录删除后在添加吗?不能直接更新吗? 请大家帮忙解决一下循环体的问题!!:) 请问oracle 自己带的http server(实际上是apache)如何配置class path 给你100分(OLE) 我在制作一个网络浏览器时遇到一个问题,在线等你的帮助 公司不做软件了,失业了,高兴送分 JNI 中内存管理的问题 ehlib控件的问题,如何在表中的一字段显示一个列表?分可以加,,,在线等 大家帮我 c# 的一大难题? 一定加分! 十万火急~~谁有完整的网站计划书? 能不能给我一份,万分感谢! 高分求教不用ActiveSkin实现金山词霸类窗体和按钮效果。 用delphi编写的dll结果不能调用,谢谢你的回答!!! mscomm控件读写串口的问题 正式加入水园 请教ListView控件的使用。 这里有100分(OLE) 成长中的一件事作文600字 当光从空气斜射入水中或其他介质中发生折射时,折射光线与入射光线在______? CaCO3 Ca(OH)2 CaO的名称 如何由实验证明该碱性由co3^2-水解引起 提供试剂包括na2co3 bacl2 naclthanks 为什么折射光的亮度会比入射光弱? 如何鉴定中含有CaCO3 Cao Ca(OH)2某混合物中同时含有 CaCO3 Cao Ca(OH)2 三种物质,如何坚定该物质中含有这三种物质,必须坚定出同时含有,缺一不可如加药品反映后产物有三种中任意一中测得含有某 怎样证明Na2CO3溶液呈碱性是由CO3,水解引起的 为什么折射光的亮度比入射光弱 用方程式表示下列物质间的转化过程C→CaO→Ca(OH)→CaCO3 如何用一个实验来证明纯碱水溶液呈碱性是由碳酸根离子引起的,而不是因为钠离子可以选用仪器和试剂:试管 胶头滴管 酚酞试液 5%纯碱溶液 5%碳酸钾溶液 5%氯化钠溶液实验结论: 一束光从空气中射入水中和反射光线成45度角,折射光和入射光的亮度哪个强? 有没有液体既不溶于水也不溶于油?不要弄什么新型纳米材料什么的.我希望得到比较传统的回答. 碳酸氢钠和碳酸钠的碱性哪个强?请从水解角度说明 当光从空气斜射如水中或其他介质中发生折射时,折射光线与入射光线在___请补充完整, 为什么油不溶于水为什么在做饭的时候,油遇上水就会往外溅(急!)明白者答 盛放石灰水的试剂瓶壁上有一层白色固体,该固体是?写出形成这种白色固体的文字表达式______,要洗去这层白色固体的物质可先加入______溶解,再用水冲洗. 为什么碳酸钠中的碳酸根离子显碱性?其他含碳酸根的化合物也显碱性吗? 1个桥墩2吨重 浸在水里2分之1 请问受到多大浮力RT 下面关于物态变化的说法判断不正确是( )A.霜是水蒸气凝华而成的 B.冰是水凝固形下面关于物态变化的说法判断不正确是(  )A.霜是水蒸气凝华而成的 B.冰是水凝固形成的C.雾是水汽 水结冰时——体积如何变化? 中和滴定,强碱滴入弱酸,应用酚酞.但不会促进弱酸电离吗?怎么测待测弱酸氢离子浓度?中和滴定,强碱滴入弱酸,应用酚酞.因为生成强碱弱酸盐,显碱性.但不会促进弱酸电离吗?改变了原弱酸氢 关于阳光经过大气层的折射既然阳光经过大气层会向下偏折,那么为什么当太阳在水平面以下时就可以被看见呢?应该是在水平面以上还看不见.而且所有地区看到的日出都是提前的吗?应该是有 为什么光从空气射入水中时,折射光线向法线偏折? 弱酸ph等于1是说溶液中的氢离子吗不包括未电离的氢离子, 光透过大气层时,会发生折射 这句话对吗 为什么激光从空气射入水中,折射光线向法线偏折,而固体(如一只筷子)从空气放入水中看,筷子是远离法线偏折的? 弱酸中氢离子的浓度和弱酸本身的浓度是否存在关系,还是说弱酸部分电离出的氢离子浓度与自身浓度存在关系 如果没有大气层对太阳光的折射 我们将晚看到太阳 为什么?如果没有大气层对太阳光的折射 早晨,我们将晚看到太阳 为什么? 光从空气进入水中为什么是向法线靠近而不是远离?最好具体一些,麻烦提一下原理, 光线从空气斜射入水中,反射光线与入射光线的夹角为100°,则折射光线与反射光线的夹角x为()A.x请说明理由。 冰怎样转化成水蒸气/水蒸气怎样转化成冰/水怎样转化成水蒸气/水蒸气怎样转化成水? 一杯水,加盐后,鸡蛋是不是浮在水面上?一个杯子,放了盐,再加水,鸡蛋是不是在杯子的中间? 求正能量 为什么水的蒸汽压低于冰的蒸汽压冰就转化为水蒸汽压有减小的趋势吗?还是什么,.....我不知道 水结冰时——体积如何变化? 10N的水可以产生大于10N的浮力吗?如果按F浮=G排看,最大浮力理论上=10N.但是如果有一物体,重力大于10N,密度小于水,那么它将漂浮,由F浮=G物看,浮力大于10N.这两个是矛盾的啊!求高手指出哪一条 乐可斯冰淇淋加盟天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内的天气状天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内 折射现象中,光在空气、玻璃、水中的角度大小关系是:______、______、______ 重10n的水可以产生的浮力A 一定小于10NB 一定大于10NC 一定等于10ND 可以大于、小于或等于10N 光在真空中的速度是[]米/秒,光线空气射入水中其速度将[] 自然光以布儒斯特角有由空气入射到一玻璃表面上,反射光是在入射面内振动的完全线偏振光.这句话为什自然光以布儒斯特角有由空气入射到一玻璃表面上,反射光是在入射面内振动的完全线 重10N的水可以产生的最大浮力是多少?答案是大于10牛,这是为什么?为什么排出的体积这么大? 美居雅阁 天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内的天气状况进行天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内 氯化锌溶于水后形成絮状物,许久不能溶解,是何原因? 在水中会有少部份水分子被电离出氢离子和氢氧根,那么水为什么不显酸性 天气预报说明大气的什么情况 ZnCl2 (氯化锌)+ HCl(盐酸)=(能发生化学反应吗?如果能请写出化学反应式.) 水是弱电解质,能电离出氢离子和氢氧根离子,那水还是纯净物吗?也就是说水中液态水中总是含有水分子、氢离子和氢氧根离子,那不是混合物了吗? 除去CACL2中的HCL用CACO3可不可以产生的H2O和CO2反应怎么办 重10N的水,它可以产生的最大浮力是? 正能量是什么意思 快 酸碱溶液中水电离出的氢离子浓度怎么算图 重为10N的水,可以产生的最大浮力是多少答案是大于10N, 正能量简单说是什么意思 我身边的正能量作文600有具体事例 为什么强酸强碱完全电离反应实质是氢离子与氢氧根离子结合生成水啊啊啊啊 CaCO3 CaO Ca(OH)2 分别是什么 我身边的正能量 作文600 液态二氧化碳灭火的原因是什么 CaCO3、Ca(OH)2、CaO 它们各自的性质、有关资料(简单点) 还有转化关系 老是弄混 谢谢啦
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘