延长电池续航时间--定位

来源:互联网 发布:安卓视频播放器源码 编辑:程序博客网 时间:2024/05/04 09:01

Android提供了多种位置服务:

(1)GPS(使用卫星的全球定位系统);

(2)网络(用Cell-ID来进行基站定位,WI-FI服务地址)

(3)被动(API等级8加入)

在没有特别要求下,可以设置更新的频率,减少请求次数。注册监听器,在不用时,禁止位置监听

//接受位置更新

private void requestLocationUpdates() {LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);List<String> provider = lm.getAllProviders();if (provider != null && !provider.isEmpty()) {LocationListener listener = new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub}};for (String name : provider) {lm.requestLocationUpdates(name, DateUtils.HOUR_IN_MILLIS * 1,100, listener);// 设置更新的频率}}}// 注销监听器(用户可以强制固定某个位置),在需要调用的地方调用private void disableLocationListener(LocationListener listener) {LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);lm.removeUpdates(listener);}//最后已知位置(不需要启动定位服务)private Location getLastKnownLocation(){LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);List<String> names = lm.getAllProviders();Location location=null;if(names!=null){for(String name:names){if(!LocationManager.PASSIVE_PROVIDER.equals(name)){Location l=lm.getLastKnownLocation(name);if((l!=null)&&(location==null|| l.getTime()>location.getTime())){location=l;}}}}return location;}


0 0