android:LocationManager详解(-)
来源:互联网 发布:陈风暴烈酒 知乎 编辑:程序博客网 时间:2024/05/21 11:16
通过在网络上查找相关资料以及阅读相关源码,总结如下:
这个类提供访问系统位置服务的访问。这些服务允许应用程序获得定期更新设备的地理位置。
点击下载源码:一个简单的demo,从网络中获取GPS信息
1、LocationManager : provider
public static final String NETWORK_PROVIDER = "network"; 相关权限: android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_FINE_LOCATION
public static final String GPS_PROVIDER = "gps"; 相关权限: android.permission.ACCESS_FINE_LOCATION
public static final String PASSIVE_PROVIDER = "passive"; 相关权限: android.permission.ACCESS_FINE_LOCATION
LocationManager.GPS_PROVIDER:GPS,精度高,速度慢,耗电对,而且可能因为天气原因或者障碍物而无法获取卫星信息,另外设备可能没有GPS模块(比如说一些平板);
LocationManager.NETWORK_PROVIDER:通过网络获取定位信息,精度低,网络通畅时速度快,耗电少,不依赖GPS模块。
2、获得LocationManager实例
protected LocationManager locationManager;locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);
3、LocationListener:位置监听器接口
protected final LocationListener locationListener=new LocationListener() { // Provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数 @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } // Provider被enable时触发此函数,比如GPS被打开 @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } // Provider被disable时触发此函数,比如GPS被关闭 @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } //当坐标改变时触发此函数 @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub mlocation=location; } };
4、获取所有的Provider
//获取当前设备所有的Provider List<String> allprovides=locationManager.getAllProviders(); for(String allprovide:allprovides){ Log.i("Test", allprovide); }
5、绑定监听与解绑
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);locationManager.removeUpdates(locationListener);
6、注意事项
在使用网络获取GPS时,需要先判断基于网络的位置服务是否开启了。locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
7、一个简单的例子
package com.example.locationmanagerdemo;import java.util.List;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.util.Log;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity { protected LocationManager locationManager; protected Location mlocation; TextView gpstext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gpstext=(TextView) findViewById(R.id.gpstext); locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE); //首先判断网络是否可用 if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); }else{ //将手机位置服务中--基于网络的位置服务关闭后,则获取不到数据 showgps("NETWORK_PROVIDER不可用,无法获取GPS信息!"); } //获取当前设备说有的Provider List<String> allprovides=locationManager.getAllProviders(); for(String allprovide:allprovides){ Log.i("Test", allprovide); } } protected final LocationListener locationListener=new LocationListener() { // Provider的在可用、暂时不可用和无服务三个状态直接切换时触发此函数 @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } // Provider被enable时触发此函数,比如GPS被打开 @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } // Provider被disable时触发此函数,比如GPS被关闭 @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } //当坐标改变时触发此函数 @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub mlocation=location; //解除监听 locationManager.removeUpdates(locationListener); String gpsinfo="GPS: Latitude="+mlocation.getLatitude()+" Longitude="+mlocation.getLongitude(); showgps(gpsinfo); } }; public void showgps(String info){ gpstext.setText(info); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
点击下载源码:一个简单的demo,从网络中获取GPS信息
1 0
- android:LocationManager详解(-)
- Android之LocationManager类的方法详解
- Android--LocationManager
- Android获取手机位置(LocationManager)
- Android 地理位置Location服务之LocationManager,Geocoder详解
- Android 地理位置Location服务之LocationManager,Geocoder详解
- Android LocationManager 使用
- Android LocationManager 使用
- Android LocationManager 使用
- Android LocationManager 使用
- Android 位置管理器(LocationManager)
- android LocationManager的使用
- android locationManager定位
- 42.Android LocationManager
- Android系统服务--LocationManager
- Android系统服务:LocationManager
- android locationManager定位
- Android LocationManager 定位服务
- joomla模板下载地址汇总
- http中的cookie简介
- Java总结--线程(二)
- 脚本语言排名
- POJ2114【树分治】
- android:LocationManager详解(-)
- python图片二值化
- opencv矩阵cvDet,cvDit,cvDotProduct,cvEigenVV and cvFlip
- 【详解】Python写爬虫脚本的教程
- 最新版DSAPI.DLL获取方式
- 无法解析或打开软件包的列表或是状态文件 解决方案
- Velocity 读取字符串模板生成代码
- MyBatis入门(一)-基本数据增、删、改查
- HDOJ 1032(POJ 1207) The 3n + 1 problem