我尝试了一种方法,使用一个监听PROVIDERS_CHANGED操作的广播接收器,但它只告诉我何时打开/关闭位置设置。我想知道任何应用程序何时使用定位服务来获取位置。我不需要知道是哪个应用程序在做这件事,我也不关心位置本身。我只想知道什么时候某个应用程序试图获取一个位置,什么时候它停止这样做。这可能吗?
最佳答案
我不知道您是否真的需要通过广播接收器通知,但如果不是绝对需要,则可以使用GpsStatus.Listener:
使用方法如下:
mLocationManager.addGpsStatusListener(new GpsStatus.Listener(){
@Override
public void onGpsStatusChanged(int event) {
if(event==GpsStatus.GPS_EVENT_STARTED){
Log.d(TAG,"Gps Started");
}else if(event==GpsStatus.GPS_EVENT_STOPPED){
Log.d(TAG,"Gps Stopped");
}
}
});
如果你真的需要通过BroadcastReceiver接收这些信息:只需将这些代码包装在一个服务中,然后从那里发送事件。