Android使用位置管理器

移动开发 Android
本文讲述如何通过进行一些简单的设置,你的应用程序就可以接受位置更新。在这次教程里你将详细的学习掌握Android位置管理器的使用。

只需要进行一些简单的设置,你的应用程序就可以接受位置更新,在这次教程里你将详细的学习这些步骤,让你掌握Android位置管理器的使用方法。

一、在Manifest里声明合适的权限

要想获取位置更新,***步需要在manifest里声明合适的权限。如果忘了声明相应的权限,那么你的应用在运行时会报安全异常。当你使用LocationManagement方法的时候,需要设置权限ACCESS_CORASE_LOCATION或者 ACCESS_FINE_LOCATION,例如,如果你的应用使用了基于网络的信息服务,你需要声明N ACCESS_CORASE_LOATION权限,要想获取GPS请求你需要声明ACCESS_FINE_LOCATION权限。值得注意的是如果你声明了ACCESS_FINE_LOCATION权限隐含着你也声明了ACCESS_CORASE_LOCATION权限。 假如一个应用使用了基于网络的位置的信息服务,你需要声明因特网权限。

  1. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
  2. <uses-permission android:name="android.permission.INTERNET" /> 

二、获得一个位置管理的引用

LocationManager是一个主类,在android里你通过这个类你可以使位置服务。使用方法类似于其他的服务,通过调用 getSystemService方法可以获得相应的引用。如果你的应用想要在前台(在Activity里)获得位置更新,你应该在onCreate() 里执行以下语句。

  1. LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

三、挑选一个位置提供者

当没有请求的时候,现在大部分android电源管理可以通过多种底层技术可以获得位置更新,这种技术被抽象为LocationProvider类的应 用。在时间、精度、成本、电源消耗等方面,位置提供者有不同的运行特性。通常,像GPS,一个精确的位置提供者,需要更长的修正时间,而不是不精确,比如 基于网络的位置提供者。 通过权衡之后你必须选择一种特殊的位置提供者,或者多重提供者,这些都依赖与你的应用的客户需求。例如,比如说一个关键点的签到服务,需要高精度定位,而 一个零售商店定位器使用城市级别的修正就可以满足。下面的代码段要求一个GPS提供者的支持。

  1. LocationProvider provider =        locationManager.getProvider(LocationManager.GPS_PROVIDER); 

你提供一些输入标准,比如精度、功率需求、成本等等,让android决定一个最合适的位置匹配提供者。下边的代码片段需要的是更精确的位置提供者而不是 考虑成本。需要注意的是这个标准不能帮你解决任何的提供者,可能返回值为空。这个时候你的应用应该能够很好的处理这种情况

  1. // Retrieve a list of location providers that have fine accuracy, no monetary cost, etc 
  2. Criteria criteria = new Criteria(); 
  3. criteria.setAccuracy(Criteria.ACCURACY_FINE); 
  4. criteria.setCostAllowed(false); 
  5. ... 
  6. String providerName = locManager.getBestProvider(criteria, true); 
  7.  
  8. // If no suitable provider is found, null is returned. 
  9. if (providerName != null) { 
  10.    ... 

四、检查位置提供者是否使能

在设置里,一些位置提供者比如GPS可以被关闭。良好的做法就是通过调用isProviderEnabled()方法来检测你想要的位置提供者是否打开。如果位置提供者被关闭了,你可以在设置里通过启动Intent来让用户打开。

  1. @Override 
  2. protected void onStart() { 
  3.     super.onStart(); 
  4.     // This verification should be done during onStart() because the system calls 
  5.     // this method when the user returns to the activity, which ensures the desired 
  6.     // location provider is enabled each time the activity resumes from the stopped state. 
  7.     LocationManager locationManager = 
  8.             (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
  9.     final boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
  10.  
  11.     if (!gpsEnabled) { 
  12.         // Build an alert dialog here that requests that the user enable 
  13.         // the location services, then when the user clicks the "OK" button, 
  14.         // call enableLocationSettings() 
  15.     } 
  16. private void enableLocationSettings() { 
  17.     Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
  18.     startActivity(settingsIntent); 

希望本文让读者朋友们对学习Android位置管理器一定的帮助和启发。

责任编辑:闫佳明 来源: wiki.eoe.cn
相关推荐

2023-11-24 08:21:08

下载任务管理器

2020-10-12 09:00:00

Firefox任务管理器浏览器

2012-12-31 10:36:58

Android开发RelativeLay布局

2010-10-20 16:12:40

SQL Server角

2011-10-24 09:47:37

RHEL网络管理器

2018-03-05 10:18:44

Linux密码密码管理器

2010-12-28 14:53:29

服务器管理器

2011-06-16 10:52:10

SUSE管理器Linux

2009-12-23 08:50:27

Fedora任务管理器

2020-04-07 15:25:22

Fluxbox窗口管理器Linux

2013-11-20 15:32:13

红帽RedHatYUM包

2023-12-14 08:01:08

事件管理器Go

2010-01-05 10:14:09

Ubuntu软件包

2009-06-30 12:15:09

资源管理器Oracle性能

2022-03-21 21:28:00

Homebrew包管理器Linux

2020-12-25 07:41:36

KubernetesOpenKruise应用

2009-02-01 10:17:22

布局管理器LayoutManagGUI

2019-09-05 09:08:53

Android TV文件管理器应用软件

2019-03-31 17:28:37

Arch LinuxLinux镜像

2011-08-23 09:22:52

UbuntuPlymouth
点赞
收藏

51CTO技术栈公众号