gpt4 book ai didi

android - 如何查看 GPS 接收器的当前状态?

转载 作者:IT老高 更新时间:2023-10-28 13:07:12 25 4
gpt4 key购买 nike

如何查看 GPS 接收器的当前状态?我已经检查了 LocationListener onStatusChanged方法,但不知何故,它似​​乎不起作用,或者只是错误的可能性。

基本上我只需要知道屏幕顶部的 GPS 图标是闪烁(没有实际修复)还是稳定(修复可用)。

最佳答案

作为 SpeedView:Android 版 GPS 车速表的开发者,我一定尝试了所有可能的解决方案来解决这个问题,但结果都是一样的。让我们重申一下什么是行不通的:

  1. onStatusChanged() 不会在 Eclair 和 Froyo 上被调用。
  2. 当然,只计算所有可用卫星是没有用的。
  3. 检查 usedInFix() 是否有任何卫星返回 true 也不是很有帮助。系统显然失去了修复,但不断报告其中仍有几个 sats 正在使用中。

这是我找到的唯一可行的解​​决方案,也是我在应用程序中实际使用的解决方案。假设我们有一个实现 GpsStatus.Listener 的简单类:

private class MyGPSListener implements GpsStatus.Listener {
public void onGpsStatusChanged(int event) {
switch (event) {
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
if (mLastLocation != null)
isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

if (isGPSFix) { // A fix has been acquired.
// Do something.
} else { // The fix has been lost.
// Do something.
}

break;
case GpsStatus.GPS_EVENT_FIRST_FIX:
// Do something.
isGPSFix = true;

break;
}
}
}

好的,现在在 onLocationChanged() 我们添加以下内容:

@Override
public void onLocationChanged(Location location) {
if (location == null) return;

mLastLocationMillis = SystemClock.elapsedRealtime();

// Do something.

mLastLocation = location;
}

就是这样。基本上,这就是完成所有工作的那一行:

isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

您当然可以调整毫秒值,但我建议将其设置为 3-5 秒左右。

这确实有效,虽然我没有查看绘制原生 GPS 图标的源代码,但这接近于复制它的行为。希望这对某人有所帮助。

关于android - 如何查看 GPS 接收器的当前状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2021176/

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