android:LocationManager详解(-)
2015-10-26 18:59
281 查看
通过在网络上查找相关资料以及阅读相关源码,总结如下:
这个类提供访问系统位置服务的访问。这些服务允许应用程序获得定期更新设备的地理位置。
点击下载源码:一个简单的demo,从网络中获取GPS信息
1、LocationManager : provider
LocationManager.GPS_PROVIDER:GPS,精度高,速度慢,耗电对,而且可能因为天气原因或者障碍物而无法获取卫星信息,另外设备可能没有GPS模块(比如说一些平板);
LocationManager.NETWORK_PROVIDER:通过网络获取定位信息,精度低,网络通畅时速度快,耗电少,不依赖GPS模块。
2、获得LocationManager实例
3、LocationListener:位置监听器接口
4、获取所有的Provider
5、绑定监听与解绑
6、注意事项
7、一个简单的例子
点击下载源码:一个简单的demo,从网络中获取GPS信息
这个类提供访问系统位置服务的访问。这些服务允许应用程序获得定期更新设备的地理位置。
点击下载源码:一个简单的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信息
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件