LocationManager基本用法

 一、获得LocationManager引用

LocationManager locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

 

二、提供设备最后已知位置,这里有3,GPS_PROVIDER GPS获得,NETWORK_PROVIDER网络获得,PASSIVE_PROVIDER被动提供其他应用程序提供

locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

 

三、返回所有能用或不能用的提供程序

locMgr.getAllProviders();

 

四、返回指定提供程序

locMgr.getProvider(Provider name);

 

五、判断指定提供程序是否能用

locMgr.isProviderEnabled(provider);

 

六、返回立即可以使用的提供程序

locMgr.getProviders(true);

 

七、返回可以使用的提供程序,并且用criteria对象指定条件

locMgr.getProviders(criteria, true)

 

八、onResume()中注册接收位置跟新事件的接收器

locMgr.requestLocationUpdates(

            LocationManager.GPS_PROVIDER,

             0,// 间隔多少毫秒通知

            0,// 最小间隔距离变化通知

            locListener);

 

 

九、onPause()中删除注册

locMgr.removeUpdates(locListener);

 

十、位置监听器

LocationListener locListener = new LocationListener(){//

            //位置信息更新时调用
            public void  onLocationChanged(Location location)
            {
                if (location != null)
                {
                    Toast.makeText(getBaseContext(),
                        "New location latitude [" + 
                        location.getLatitude() +
                        "] longitude [" + 
                        location.getLongitude()+"]",
                        Toast.LENGTH_SHORT).show();
                }
            }

十一、当禁用的提供程序被调用时会立即调用
            public void  onProviderDisabled(String provider)
            {
            }

十二、用户启用提供程序时被调用
            public void  onProviderEnabled(String provider)
            {
            }

 

 十三、状态变化时被调用
            public void  onStatusChanged(String provider, 
                            int status, Bundle extras)
            {
            }
        };
    }

 

 

十四、请求用户打开GPS

startActivityForResult(new Intent(android.provider.Settings.ACTION_LOCALE_SETTINGS), 0); 

/**

LocationManager 接近提醒

*/

十五、geo模式:uri的前缀来过滤数据类型

String PROX_ALERT = "com.androidbook.intent.action.PROXIMITY_ALERT";

IntentFilter iFilter = new IntentFilter(PROX_ALERT);//设置了过滤器所接受的行为

iFilter.addDataScheme("geo");//设置了过滤器说接受的uri前缀

 

String geo = "geo:"+lat+","+lon;

Intent intent = new Intent(PROX_ALERT, Uri.parse(geo));//intent中添加uri匹配intentFilter

pIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);//创建PendingIntent

locMgr.addProximityAlert(lat, lon, radius, 6000L, pIntent1);//纬度,经度,半径,超时,触发后的行为

十六、获取经纬度和海拔

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

double latitude = location.getLatitude();  //经度

double longitude = location.getLongitude(); //纬度

double altitude = location.getAltitude(); //海拔

 

 

 

你可能感兴趣的:(LocationManager)