gpt4 book ai didi

Android:检测到用户打开状态栏

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:08 26 4
gpt4 key购买 nike

我正在编写一个使用 GPS 进行本地化服务的应用程序。当用户尝试在禁用 GPS 的情况下使用该应用程序时,会弹出一个对话框。现在,用户可以最小化应用程序并更改 GPS 设置。当他重新打开应用程序时,它会在 onResume() 中检测到设置已更改并关闭对话框。这工作正常,但用户有第二种方式来启用 GPS:状态栏。打开和关闭状态栏时,onResume() 和 onWindowFocusChanged() 都不会被调用,因此我无法检测到用户何时启用了 GPS。

有没有办法检测状态栏的打开情况?

我可以通过 LocationListener 做到这一点,但我想按照我上面写的那样去做。

提前致谢!


我在 android-dev IRC 上找到了帮助。现在,我正在使用 Observer 来通知设置更改,例如 here .因此,我检测到所有设置更改,即使它们是通过通知栏完成的,也没有从 LocationManager 请求更新。感谢您的帮助!

最佳答案

要监听用户已启用的 GPS,使用状态栏,您可以通过位置管理器设置监听器以进行更改:

private class DisabledGPSListener implements LocationListener{

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
locationManager.removeUpdates(this);
locationManager.addGpsStatusListener(gpsStatusListener);
}

在 onCreate() 中设置这个监听器

if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locationManager.addGpsStatusListener(gpsStatusListener);
}else{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,0, new DisabledGPSListener());
}

其中 gpsStatusListener 是以下实例:

    private class GPSStatuslistener implements GpsStatus.Listener {

@Override
public void onGpsStatusChanged(int event) {
switch (event) {
case GpsStatus.GPS_EVENT_STARTED:
Log.d(TAG, "ongpsstatus changed started");
//TODO: your code that get location updates, e.g. set active location listener
break;
case GpsStatus.GPS_EVENT_STOPPED:
Log.d(TAG, "ongpsstatus changed stopped");
createGpsDisabledAlert();
}
}

关于Android:检测到用户打开状态栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com