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

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。

 

 

 

云计算,让游戏世界更加精彩 360推儿童卫士手环,你怎么看? 量产谈判正在进行时:谷歌手表或比Google Glass先上市 Mozilla发布新版Firefox 25 提供支持Web Audio API UC产品总裁何小鹏:轻应用,做什么?怎么做? 高德携手阿里云发布“LBS云”,账户打通只是第一步 最后2天!2013移动开发者大会5折抢票倒计时 大数据如何改变在线广告业? 摩托罗拉推开源硬件平台计划Project Ara 七个垂手可得的敏捷开发工具 微信新版公众平台调整细节381处 300/次认证费引争议 libgit2:纯C语言实现的Git开发包 MongoDB的得与失 开箱即用!Android四款系统架构工具 谁说Kinect只是玩物?微软研究院使用它实现口语手语实时翻译 新浪微博推出粉丝服务平台 引发两微PK大战 MDCC2013移动开发者大会最新日程发布 门票优惠最后1天 英特尔CEO:EUV光刻技术或助力芯片突破摩尔定律 从微软大数据日看到的,银行、交通、医疗实践之路 IDC:iPad市场份额遭Android平板蚕食 滑至29.6% [TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案 用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 pcAnywhere操作不能刷新的问题?高手来解救我吧!! 请帮我分析一下为什么会出现这样的错误提示:Access vidation at address 004a36B2 in modale'**.exe'read of address FFFFFFFF CTime和CTimeSpan的使用问题!!!很奇怪??????? 我在写Tuxedo服务程序时,在VC++环境下编译连接时发生以下错误。 关于PDF文件(高分奉送) 来新公司一月了,遇到一个问题,请大家帮忙分析! 谋杀——转贴 打安装包时,提示某些dll过期(很多),怎么办呀? 出生年月与年龄的问题 大家帮帮忙!!!!!!!!!!! 我的天啊!CListCtrl不允许设置行间距和字体大小吗? 如何在40G的硬盘(maxtor)上安装nt4.0 100分(我全部的分),加速,代码优化,JPEG 求救 如何编代码自动创建NT的账号、密码(用什么API实现) 大家看看,我在做一个Messagebox的提示信息时的提示!!!!!奇怪,.net真奇怪 关于计数统计的问题 查某一个人全部贴子的方法。 怎样建立无盘工作站?? pcAnywhere操作不能刷新的问题?高手来解救我吧!! 高手们帮帮忙,我的聊天室怎么不支持中文??? 关于换行的问题??? 各位大侠,请教注册表子项枚举问题?(100分) 修改記錄問題(20)分! 各位大侠帮我检查一下这段代码 再线关注,一个关于excel的问题?一解决立即给分,up有分! 居中 哪里有这些书下载啊!!!! 我的控件不见了! reintroduce和overload有什么区别吗? 关于Javadoc的使用 请问如何在程序运行时根据分辨率等比例调整窗体,控件和字体的大小,使得在任何分辨率下均满屏显示 世界杯“蓝色厄运”理论:英格兰胜巴西 德国淘汰美国(转贴) 关于treeview的节点事件问题,把在下高糊涂了,请高手明示。 要毕业了。。。 BCB中数据库控件的错误扑捉怎么写?比如数据库不存在? 请教如何在调运api函数时,建立缓冲区 SetEvent函数调用带来非法内存访问,扭心的问题。 文件和字符混和上传问题 诸位大虾请帮忙? 各位大虾:哪里有vb.net下载啊? 请教:“开始”菜单中的“文档”菜单不见了! 急!急!急! 一个关于模式对话框的问题 oracle 用sql plus /spool 输出 查询结果时怎么把 查询sql 本身 去掉(不输出) ? 世界杯“蓝色厄运”理论:英格兰胜巴西 德国淘汰美国(转贴) !!请 “arxing(阿行)”回答!!about 对象池!!!! 各位老大,怎样将给定的中文根据拼音排序? access97中的报表中显示中文字段时为什么是乱码,怎样解决,急呀!老大们!! 急:在哪儿可以下载java的反编译器jad.exe????? 请帮忙 做过数据分析的高手请进。。。(我感觉很头疼的一个问题!) 共享Interent怎样实现? 一块长方形的木板长60厘米,宽35厘米在这块木板上锯下一个最大的正方形,这个正方形的周长是多少厘米?请帮计算 图中阴影部分面积是100平方厘米,求环形面积 从一块长方形木板上锯下一个最大的正方形,剩下一个长方形.已知原来长方形的长是100cm,求剩下的长方形周从一块长方形木板上锯下一个最大的正方形,剩下一个长方形.已知原来长方形的长是 谁能给写一个关于教育方面的调查报告?一千字以上抄袭的就给这些分 1.(sinx)^(-3)(cosx)^(-5)的不定积分2.x乘以arcsinx乘以根号下(1-x^2)的不定积分 一块木板长198分米、宽90分米,要锯成若干个正方形,而且没有剩余,最少可以锯成多少块? 一篇稿件,甲独抄6小时完成,乙独抄要8小时完成,两人合抄要几小时完成?列式计算!重赏! 写一个反义词,对制假币,贩假币的现象进行谴责. 8吨5千克=()千克;3.06m³=()m³()立方分米 一瓶水有5分之4升,4分之3之瓶水有几分之几升? 你还知道哪些诗文“练字”的故事? 一个底面半径为10厘米的圆柱形水桶中装有水,把一个底面半径为5厘米的圆锥形铝锥浸没在水中,水面上升了1厘米,铝锥高多少厘米? 最搞笑的诗 句是什么? 0.98立方厘米=( )立方厘米 650ml=( )立方厘米 买了两副乒乓球拍,如果没人付9元,那么多出5己;如果每人付8元,那么还缺2元,这个小组的人数是多少? 有两只大的网球拍和一只小的乒乓球拍共200元,每只网球拍和乒乓球拍多少元? 有没有像这样的搞笑诗【一年级的小偷,三年级的美眉跳芭蕾……】这样的,不要古诗 650立方厘米=( )升请换算成分数,做得好自然会悬赏! 长歌行的诗句 如图,已知阴影部分的面积是100平方厘米,求圆环的面积. 把一张长120cm,宽80cm的长方形纸裁成最大正方形(纸无剩余),至少可以裁多少张求公式 要《长歌行》诗句 在一只长50厘米,宽40厘米的长方体玻璃水缸中,浸入一块棱长20厘米的正方体铁块后,水面会上升多少厘米? 把一张长为120cm,宽80cm长方形裁成正方形(无剩余)能裁多少正方形? 怎样快速口算出两位数乘法(两位数乘除两位数) 在一只长40厘米宽20厘米的玻璃水缸中放入一块棱长10厘米的正方体铁块,铁块浸没在水中水面升高了几厘米 把一张长180cm,宽120cm的长方形纸片裁成正方形(纸无剩余),至少能裁多少张? 在极坐标系(ρ,θ)(0 一只长方形玻璃缸高为40,浸入个棱长20的正方体铁块,水面上升了2厘米,这个水缸的体积是多 有两条曲线y=-x2,4y=-x2及直线y=-1所围成的图形面积 把长30厘米,宽24厘米的长方形木板锯成大小相等的小正方形,每个小正方形的边长最少是多少厘米?锯多少块 关于亲情的初中作文 计算由下列各曲线所围成图形的面积:y=1/2x2,x2+y2=8(两部分都要计算)为什么会有Pai 一块木板长36厘米,宽24厘米,锯成相同的小正方形若干块,求正方形尽量大,正方形边长是几厘米?可以锯几块 乒乓球拍每幅定价30元乒乓球每盒定价5元甲店买一副球拍给一盒乒乓球乙店全9折优惠需球拍5副乒乓球不小于51)当购买乒乓球多少盒时,两种优惠办法付款一样?2)当分别购买15盒,30盒乒乓球 甲乙两家商店出售相同的乒乓球和乒乓球拍,且定价相同,乒乓球拍每副定价30元,乒乓球每盒5元.甲、乙两家商店出售相同品牌的乒乓球和乒乓球拍,且定价相同,乒乓球拍每副定价30元,乒乓球每 一块木板长36厘米,宽24厘米,锯成相同的正方形木板若干块,要求正方形面积尽量大而没有余料,锯成的正方形木块边长是多少厘米?可以据几块? 一副球怕定价30元,一盒乒乓球定价5元,店买一副球拍给一盒乒乓球乙店全9折优惠需球拍5副乒乓球不小于5当购买乒乓球多少盒时,两家商店给予的优惠相同? 甲、乙两家商店出售相同品牌的乒乓球和乒乓球拍,且定价相同,乒乓球拍每副定价30元,乒乓球每盒定价5元.但甲、乙两点的促销方案不同,甲店每买一盒球拍赠一盒乒乓球,乙店全部按定价的9折 一个长6分米,宽5分米的长方体,浸没在一个长2米宽1.5米,2米的水箱中,水面升高5厘米,这个长方体高?快. 我想把比叫小的虫子拿来喂鱼,但我又不想买饲料,怎么样才可以捕捉昆虫. 请用简短的一句反问句表达自己对制假币现象的看法. 把长24厘米、宽30厘米的长方形木板锯成大小相等的小正方形,且没有剩余,每个小正方形的边长最长是多少厘米?能锯成多少块? 详细的步骤!谢 了! 怎么大量捕捉昆虫 甲乙两家商店出售两种同样品牌的乒乓球和乒乓球拍.乒乓球拍每副定价30元,乒乓球每盒5元,经洽谈后,甲店每买一副球拍送一盒乒乓球,乙店全部按定价的9折优惠.该班需球拍5副,乒乓球若干盒 简述宋朝商品经济发展的特点 少先队员一共采集标本168件,其中5/8是植物标本,其余是昆虫标本.昆虫标本有多少件? 用上一对反义词,写一段对制假币,贩假币的现象进行谴责 运用经济常识的有关知识,阐述低碳商品间隔下降得必然性. 中国有什么民间昆虫协会吗?有一起去捕捉昆虫的活动吗? 练字,关于成年人练字的问题我小时候练过庞中华和司马彦的,但是总是应付,没好好练.现在长大了,后悔了.工作中,写个字觉得很别扭.我写一个字的时候,写的比较好.但是写一段的时候就感觉很 从《西方经济学》角度分析企业如何利用产品差别在竞争中获胜? 浪漫庄园昆虫收集册的昆虫都在哪里收集 成人如何练字 一块长45厘米宽30厘米的长方形木板锯成若干块正方形而无剩余,所锯成的正方形边长最长是几厘米?越快越好 sinx^6/(sinx^6+cosx^6)不定积分 成年人练字方法一把年纪了感觉自己的字写的好差,出去都不好意思当着客户的面做笔记,谁能推荐一些方法把字给整好. 一块长方形木板,长60厘米、宽40厘米,锯下一个最大的正方形后,剩下的小长方形周长是多少厘米 成年人想要练字,应该选择哪种字帖啊? 以“中国梦,我的梦”为主题写一篇征文,500字,内容要新颖,不要复制的.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘