gpt4 book ai didi

android - GPS 位置获取在 ICS 上永不停止

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:33 24 4
gpt4 key购买 nike

我尝试使用我的 LocationListener 进行两步位置检测。它按预期在每个 android 版本上按预期工作。仅在 ICS 上我无法停止 GPS 位置检测。

// inner class inside my PoiActivity
private class CustomLocationListener implements LocationListener {
String currentProvider = LocationManager.NETWORK_PROVIDER;

@Override
public void onLocationChanged(Location location) {
if (location != null) {
if (currentProvider.equals(LocationManager.NETWORK_PROVIDER)) {
System.out.println(this);
mLastKnownLocation = location;
mHandler.sendEmptyMessage(0);
mLocationManager.removeUpdates(this);
Log.i("CustomLocationListener", "Got a rough location, removing the network listener ");
Toast.makeText(PoiActivity.this, "Network found and removed", Toast.LENGTH_LONG).show();
mLocationManager
.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, Constants.LOCATION_MAX_ACCURACY, this);
currentProvider = LocationManager.GPS_PROVIDER;
} else if (location.getAccuracy() < Constants.LOCATION_MAX_ACCURACY
&& currentProvider.equals(LocationManager.GPS_PROVIDER)) {
System.out.println(this);
mLastKnownLocation = location;
mHandler.sendEmptyMessage(0);
mLocationManager.removeUpdates(this);
Log.i("CustomLocationListener", "Got a rough location, removing the gps listener ");
Toast.makeText(PoiActivity.this, "GPS found and removed", Toast.LENGTH_LONG).show();
}
}
}

@Override
public void onProviderDisabled(String provider) {}

@Override
public void onProviderEnabled(String provider) {}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}

根据 Toast 和 LogCat 信息,监听器已删除,并且在除 ICS 之外的每个版本上我都看到 GPS 图标消失了。在 ICS 上,该图标会在几秒钟后重新出现,但我从未多次收到 Toasts,因此我的监听器已成功移除。

使用任务管理器或通过应用程序信息关闭应用程序不会阻止 GPS 图标一次又一次地出现。

我猜这是一个特定的 ICS 问题,但我找不到该问题的错误报告或类似的问题描述。

有人有解决方法吗?因为我不想让用户有这样的感觉,我拉了几次,耗电没有任何好处……

最佳答案

我看过几个来源(都不是确定的)暗示图标状态可能无法反射(reflect) GPS 芯片的状态。为了查明 GPS 是否实际运行,您可以编写一个测试应用程序,它仅使用 PASSIVE_PROVIDER 并触发 Toast 或将位置发送到位置更改的文本框(如果源是 GPS)。

虽然我手机的图标似乎可以正常运行,但我编写了一个测试“脏应用程序”,它只在 onDestroy 中而不是在 onPause 中删除位置更新。因此,当我启动此应用程序并按“主页”时,它会进入后台,但会保持 GPS 开启。如果我随后运行被动提供程序应用程序,它会获取位置更新。

您可以做类似的事情来让您的思绪得到休息,(或以其他方式)。

关于android - GPS 位置获取在 ICS 上永不停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177662/

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