java - 在 Android App 中检查 GPS Provider 的状态
问题描述
我有一个可操作的 Android 应用程序,它在后台服务中报告用户位置。我想集成一个功能,它会在 GPS 信号丢失时通知用户。
我们目前开始位置更新的实施是:
mLocationListener = LocationListener(LocationManager.GPS_PROVIDER, gpsDeviceCallback)
if (handlerThread?.isAlive == true) {
handlerThread?.quit()
}
handlerThread = HandlerThread("GpsLocationHandler")
handlerThread!!.start()
mLocationManager?.requestLocationUpdates(
LocationManager.GPS_PROVIDER, LOCATION_INTERVAL, LOCATION_DISTANCE.toFloat(),
mLocationListener, handlerThread!!.looper)
LOCATION_INTERVAL 设置为 1000 毫秒,LOCATION_DISTANCE 设置为 10m。
我们在正常操作下得到预期的 onLocationChanged 回调。但是,我希望就如何检测 GPS 丢失或手机无法获得足够 GPS 信号的情况提供建议。
我们已经实现了一个解决方案,我们运行一个时间任务并确定在计时器期间是否调用了 onLocationChanged。该解决方案的问题在于,如果用户手机在此期间是静止的,则不会发生 onLocationChanged 回调。因此,这种方法不能作为检测 GPS 信号不足的方法。
现在不推荐使用 onStatusChanged 作为 LocationListener 方法的用户,因此这也不是一个选项。
这个问题有一些标准的解决方案吗?当我们的检查计时器到期以测试当前 GPS 状态时,在没有发生 onLocationChanged 回调的情况下,也许可以调用一些方法?
谢谢!
解决方案
您可以检查当前连接的卫星并估算准确度,请参见:https://stackoverflow.com/a/10589949
推荐阅读
- json - 如何在 SQL 中使用选择值作为 JSON 的键
- asp.net-core - .Net 核心中具有身份服务器 4 的多个 ADFS 服务器
- python - 在 drawChessboardCorners 上使用排序功能时出现打印问题
- typescript - 有没有办法使用量角器在多个浏览器上运行相同的测试,中间有几秒钟的延迟?
- python - 在 Python 中处理 AdvancedSearchComplete 事件
- javascript - 自定义 Accordion 组件不呈现正文元素
- node.js - 如何将变量传递给端点nodejs
- microsoft-graph-toolkit - 如何将 JSON 绑定到控件?
- forms - 表单查询symfony 3.4中的空选项
- python - 用于 python 脚本的 Cron 无法找到安装在 python 虚拟环境中的库