剖析Android增强功能的两种权限请求

移动开发 Android
在实现了Android增强功能现实引擎的前两个元素即摄像头与指南针之后,下一步要做的就是确定位置。

为了完成Android增强功能这项任务,我们主要用到Android的LocationManager对象,在进行操作该项目之前,我们需要解决一些Android的其他问题,其中权限是我们首先要扫除的***个障碍。

Android增强功能的LocationManager支持两种权限请求:

1. 需要告知系统您希望取得用户的位置。
2. 需要告诉它您想要十分详细的地理信息。

您需要在AndroidManifest.xmlxml 文件<manifes获得位置管理器看起来好像挺简单的,但是还是得牢记一些事项。首先,我们也许只能在UI主线程中请求位置管理器。我们要么在有关动作的onCreate调用中请求LocationManager对象,要么使用LocationManager请求创建一个运行于主线程的可执行对象。

如您所见,这里声明了一个LocationManager对象,使用getSystemService获得您的对象,然后调用了requestLocationUpdates。您可能想知道位置更新时需要哪些参数。首先,您告诉系统,您想使用系统中GPS装置的位置更新功能。然后。

您告诉它您希望多长时间更新一次(本例时间间隔为100ms),并且每当移动一米以上时就更新。这样,就能迅速识别他们的移动情况并调整它们与其他对象的位置关系。***,传入实现LocationListener接口的类的实例。为位置更新传递请求后,LocationListener类将收到初始位置,继之以后来位置的改变情况。下面是我们的LocationListener:

  1. LocationListener gpsListener = new LocationListener(){  
  2.       Location curLocation;  
  3.       boolean locationChanged = false;   
  4.       public void onLocationChanged(Location location)  
  5.       {  
  6.          if(curLocation == null)  
  7.          {  
  8.             curLocation = location;  
  9.             locationChanged = true;  
  10.          }  
  11.            
  12.          if(curLocation.getLatitude() == location.getLatitude() &&  
  13.                curLocation.getLongitude() == location.getLongitude())  
  14.             locationChanged = false;  
  15.          else  
  16.             locationChanged = true;  
  17.            
  18.          curLocation = location;  
  19.       }  
  20.       public void onProviderDisabled(String provider){}  
  21.       public void onProviderEnabled(String provider){}  
  22.       public void onStatusChanged(String provider, int status, Bundle extras){}  
  23. }; 

在上面的代码中,我们唯一需要关心的就是onLocationChanged这个方法。然而,我们还会介绍这个对象的其它方法。以便您将这个对象复制到您自己的代码中时能够了解它们。 一旦卫星锁定了这个设备,方法onLocationChanged就会被调用,之后每经过在请求更新时指定的时间间隔(本例中为100ms)后,就会调用一次。

每当位置更新时,Android增强功能都会带来一个Location对象。我们通过这个类可以获得目标的经纬度,并完成许多重要事情。这里我们最感兴趣的方法是getLatitude()、getLongitude()、bearingTo()与distanceTo()。使用这四个函数,我们可以计算出任何随后的位置的方位角,并确定出离您的距离有多远。

【编辑推荐】

  1. 新一代的Android手机介绍
  2. 深度剖析Android SDK版本介绍
  3. 谷歌Android手机能否站稳中国
  4. PythonAndroid深度剖析Android应用程序的四种构 造块
  5. 探秘与众不同的Android系统?
责任编辑:chenqingxiang 来源: 51CTO.com
相关推荐

2010-09-17 09:37:27

Java安装方法

2010-07-28 09:29:36

Flex DataGr

2010-01-12 10:57:16

C++的复杂性

2020-09-24 10:09:01

GETPOST前端

2009-09-14 19:25:09

Ruby form

2010-10-11 10:31:51

MySQL分区

2013-05-27 14:31:34

Hadoop 2.0

2013-06-27 09:26:50

Android界面刷新

2021-05-27 10:57:01

TCP定时器网络协议

2010-03-11 14:34:47

Python环境

2011-03-03 10:26:04

Pureftpd

2010-07-14 16:28:58

配线架

2010-08-06 09:38:11

Flex读取XML

2023-03-29 13:06:36

2021-08-11 06:57:16

ShuffleSpark核心

2010-06-07 17:41:42

Sendmail 配置

2022-03-15 08:25:32

SparkShuffle框架

2010-10-21 16:24:18

sql server升

2009-06-25 13:43:00

Buffalo AJA

2011-04-06 12:41:41

Java异常
点赞
收藏

51CTO技术栈公众号