首页 > 新闻系统 > 编程天地 > 文章正文

Android编程之实现GPS定位

2008-03-07 11:08:16 来源:网络 作者:转载 点击:
开发式手机联盟推出自己的 Android手机雏形时,受到了极大的追捧。

四、Android实例
  
    这个演示应用程序将演示了用户的当前的经度和纬度(在文本框中显示)。onCreate构造方法将和上面的例子基本相同,除了在其中加入了键盘处理,现在让我们看一下onKeyDown的代码。

				
undefined undefined 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方法的代码。
  
				
undefined undefined 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方法列出了上面看到的内容。
  
						
undefined undefined public void CreateView() { customView = new CustomView( this ); }


  这个方法简单地调用了CustomView对象的构造方法。CustomView类的定义如下:
  
						
undefined undefined 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发布第一个基于Android的手机,并使用它。
9 7 3 1 2 3 4 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203