相关疑难解决方法(0)

Android位置提供商 - GPS或网络提供商?

在我的应用程序中,我想确定用户的当前位置.但是我在这方面有几个问题:

  1. 有不同的位置提供商,哪一个最准确?该GPS提供商网络提供商

  2. 这些可用的提供商有多远?它们如何运作?

  3. 能否请您提供一些代码片段或教程,介绍如何开始在我的应用程序中实现GPS功能?

android location location-provider

120
推荐指数
2
解决办法
12万
查看次数

android.location.PROVIDERS_CHANGED 在设备上手动切换 GPS/位置时多次触发

我已经浏览了一些处理这个问题的资源,但没有一个提供令人满意的解释或解决方案。我浏览过的一些内容是:

关闭 GPS 时广播接收器调用了 2 次?

打开/关闭 wifi 或 gps 时,我的 BroadcastReceiver 被调用两次?

android.location.PROVIDERS_CHANGED BroadcastReceiver 多次触发

如何捕捉一次GPS关闭广播?

因此,我重新发布这个问题。

问题陈述很简单,我有一个广播接收器,每当设备的 GPS/位置状态发生变化时就会触发该接收器。问题在于 onReceive() 方法被多次调用(准确地说是 4 次)。

我已在清单文件中注册了我的接收器(而不是其他地方):

        <receiver android:name=".broadcasts.DeviceGpsStatusReceiver">
            <intent-filter>
                <action android:name="android.location.PROVIDERS_CHANGED" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
Run Code Online (Sandbox Code Playgroud)

我还确保该接收器未在我的应用程序中的其他任何地方注册。

广播接收器的设计如下:

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
            // my content
        }
    }
Run Code Online (Sandbox Code Playgroud)

即使进行了此更改,我仍然看到 onReceive() 重写方法被多次触发。为什么会这样呢?有办法解决这个问题吗?

android broadcastreceiver android-gps

5
推荐指数
0
解决办法
636
查看次数