FusedLocationProviderClient 一直显示“正在搜索 gps”通知

Posted

技术标签:

【中文标题】FusedLocationProviderClient 一直显示“正在搜索 gps”通知【英文标题】:FusedLocationProviderClient keeps showing "Searching gps" notification 【发布时间】:2019-09-03 09:10:07 【问题描述】:

我想澄清一下“搜索 gps”通知的含义。我有一个简单的应用程序,它尝试使用以下代码通过 FusedLocationProviderClient 检索用户位置:

val fusedLocationClient = LocationServices.getFusedLocationProviderClient(activity as Activity)
fusedLocationClient.lastLocation
                .addOnSuccessListener  location: Location? ->
                    mMap.isMyLocationEnabled = true
                    // other trivial stuff here
                .addOnFailureListener 
                    // showing an error here
                

即使检索到最后一个位置,android 也会继续显示“搜索 gps”通知(下面屏幕截图中的 Ricerca gps)。据您所知,这意味着应用程序仍在搜索 gps 更新(因此会耗尽电池),或者是一条简单的消息来通知用户应用程序正在使用 gps?感谢您的澄清,我的设备是小米红米 5 Plus (MiUI)

【问题讨论】:

Fused Location Provider 可能通过其他方式(手机信号塔、Wi-Fi 等)找到了位置,但手机尚未建立 GPS 定位。这可能需要时间。如果您在 GPS 无法正常工作的室内进行测试,则更是如此。 【参考方案1】:

我不是 100% 确定我理解这个问题,但我会在这里试一试。我认为正在发生以下两种情况之一:

    MyFoody 应用程序正在显式显示通知,一旦不再需要显示通知,应用程序就有责任隐藏通知。您需要注意在您定义的侦听器的成功和失败函数中清除该通知。你的听众被叫到了吗?他们是否清除通知?

    可能是小米修改了 Android 以在检索位置时代表您的应用显示该通知。如果是这种情况,那么您需要弄清楚为什么这个经过小米修改的 Android 版本仍然认为您的应用程序正在尝试获取位置。这也可能只是小米的一个错误,但我认为这是最后的手段。

【讨论】:

我没有明确显示来自应用程序的通知,我猜它与 MiUi 有关。设置来自 gps 的位置后,我可以删除通知。当 GPS 设置其位置时,情况并非如此 那么你的监听函数之一被调用了吗?如果是这样,在调用函数时通知会消失,还是 MiUi 中存在未清除通知的错误? 我猜这是 MiUi 中的一个错误,没有隐藏通知。我必须通过触摸手动删除它

以上是关于FusedLocationProviderClient 一直显示“正在搜索 gps”通知的主要内容,如果未能解决你的问题,请参考以下文章