gpt4 book ai didi

Android Locationprovider 时间过长导致暂时不可用

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:37 25 4
gpt4 key购买 nike

根据这篇文章(UPD: 链接已删除,因为它现在会导致一些废话),在请求位置更新时设置 minTime 将导致提供商将自己设置为TEMPORARILY_UNAVAILABLE minTime 毫秒以节省电池电量。在此期间不活动期间,GPS 提供商将自行关闭并且 GPS 图标将消失。

在我的代码中,我将 minTime 设置为大约 30 秒,但提供商每五分钟才会变为 TEMPORARILY_UNAVAILABLE 一次。当它这样做时,它最多只会保持 TEMPORARILY_UNAVAILABLE 十秒钟,然后再重新打开。我知道这一点,因为 GPS 图标只消失了十秒钟就再次出现。

我知道 minTime 设置只是 Android 位置提供程序的粗略指南……但我很确定 5 分钟与 30 秒完全不同。有谁知道这里发生了什么? minTime 和 requestLocationUpdates 实际上是如何工作的?

位置管理器设置:

locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,30000L, 0, locListener);

loc监听器:

public void onLocationChanged(Location loc) {
//Keep track of best location
//Having a location > no location
if (bestLocation == null)
bestLocation = loc;
//More accuracy > Less accuracy
else if (loc.getAccuracy() <= bestLocation.getAccuracy())
bestLocation = loc;

Log.d(TAG, "Location Updated";
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d(TAG, "New status: " + status);
if (status== LocationProvider.TEMPORARILY_UNAVAILABLE)
//Do stuff since the provider is temporarily off
}

在真实 Android 设备(HTC Incredible 2.2)上的调试输出:

Location Updated
Location Updated
New status: 2
Location Updated
Location Updated
Location Updated
New status: 2
... (five minutes later)
New status: 1

最佳答案

来自API :

“后台服务应谨慎设置足够高的 minTime,以便设备不会因始终保持 GPS 或 radio 而消耗过多电量。特别是,不建议低于 60000 毫秒的值.”(重点是我的)

“此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值。” (重点是我的)。

如果您需要立即知道位置,请使用 getLastKnownLocation(String)

关于Android Locationprovider 时间过长导致暂时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213815/

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