在启动/停止GPS(或位置服务)时接收通知(通过BroadcastReceiver)

时间:2014-04-25 10:43:39

标签: android location broadcastreceiver

我通过使用侦听PROVIDERS_CHANGED操作的BroadcastReceiver尝试了一种方法,但这只会告诉我何时打开/关闭位置设置。我想知道什么时候使用位置服务来获取任何应用程序的位置。我不需要知道哪个应用程序正在执行它,我不关心位置本身。我只想知道某个应用程序试图获取某个位置,以及何时停止这样做。这可能吗?

2 个答案:

答案 0 :(得分:6)

我不知道您是否真的需要通过广播接收器获得通知,但如果不是绝对需要,那么您可以使用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接收此信息:只需将此代码包装在服务中并从那里发送事件。

答案 1 :(得分:4)

不完全是您所要求但可能感兴趣的内容:您可以从PASSIVE_PROVIDERLocationManager注册位置更新。

  

当其他应用程序或服务请求时,此提供程序可用于被动地接收位置更新,而无需自己实际请求这些位置。

您无法知道其他应用何时停止申请新位置,或者何时开始申请新位置,但您知道他们什么时候收到他们要求的位置。