android-监视GPS状态(如果用户使用通知栏关闭GPS,则无法检查)
作者:互联网
在我的应用程序中,我需要监视GPS状态,该应用程序应仅在GPS打开的情况下运行,并且如果用户关闭GPS,则显示“位置和安全性”设置.我为GPS监控实现了自定义类:
public class GPSManager {
LocationManager mLocationManager;
StatusListener statusListener;
/**
* @param Context context - context to get LocationManager service
* @param IGpsStatusClient client -component, which wants to receive GPS status update
*/
public GPSManager(Context context, IGpsStatusClient client) {
mLocationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
statusListener=new StatusListener(client);
}
public boolean isGpsEnabled(){
return mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}
public void registerUpdates() {
mLocationManager.addGpsStatusListener(statusListener);
}
public void unregisterUpdates() {
mLocationManager.removeGpsStatusListener(statusListener);
}
class StatusListener implements GpsStatus.Listener {
IGpsStatusClient client;
public StatusListener(IGpsStatusClient client){
this.client=client;
}
public void onGpsStatusChanged(int event) {
if(event==GpsStatus.GPS_EVENT_STOPPED){
client.promptGpsSettings();
}
}
}
}
客户端是一个Fragment类实例.它使用一种方法(我在其中显示位置设置)实现IGpsStatusClient接口.
我在onResume()中注册更新,并在onPause()中注销
但这没有效果.当我展开通知栏并关闭GPS并返回到应用程序时,没有提示.据我了解,GPS状态通知不像“挂起的意图”,它会挂起一会儿,以便所有接收者都可以处理它.
有什么选择?
据我了解,GPS只能由用户关闭,而不是在我的活动可见时关闭.因此,我只应在Activity(或Fragment)生命周期事件中检查GPS状态.但是当通知栏展开时,我没有收到onResume()或onPause()调用(但是为什么我没有收到GPS状态通知?)
我当时在考虑服务,但认为这对我的问题来说是昂贵的.
有什么帮助吗?
谢谢.
解决方法:
您是否尝试实现LocationListener并使用onProviderDisabled / onProviderEnabled方法?
Here是指向LocationListener的android开发人员页面的链接
标签:android-location,android 来源: https://codeday.me/bug/20191102/1988802.html