0

我有一个需要用户当前位置的应用程序。在应用程序中,我注册了两个位置提供商来监听位置,此外我还检查了最后一个已知位置。但应用程序并不总是收到位置。我今天发现的令人惊讶的事情是,

GPS 已关闭

但无线网络的位置已打开。

我打开谷歌地图,我可以看到它非常准确地显示了当前位置。但是当我打开我的应用程序时,它无法获取位置。

看到这一点我很惊讶,我认为谷歌地图正在做一些事情来接收位置,而不是我所做的。

这是我注册位置的方式

locationManager = (LocationManager) this
            .getSystemService(Context.LOCATION_SERVICE);
    Location location = null;
    try {
        locationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 10, 100, this);

        Location location1 = locationManager
                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        if (location1 != null)
            location = location1;
        Log.v(TAG, "Network listener Enabled");

    } catch (RuntimeException ee) {
        // TODO: handle exception
        Log.e(TAG, "Network Providers Disabled");

    }

    try {
        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 10, 100, this);

        Location location1 = locationManager
                .getLastKnownLocation(LocationManager.GPS_PROVIDER);
        Log.v(TAG, "GPS listener enabled");
        if (location1 != null)
            location = location1;
    } catch (RuntimeException e) {
        Log.e(TAG, "GPS not available");

    }

我不知道我是否还有其他需要做的事情。请帮我。

4

1 回答 1

1

是的,我在我的应用程序中也发现了这一点……但不幸的是,我们不知道它们的实现;)。如果您使用网络提供商,我认为通过网络检索位置的整个初始化过程都是新的。我确信 GoogleMaps 会缓存或正在后台服务中检查位置,以便您立即获得位置。

所以你应该做一个后台服务,它会定期检查位置并缓存位置。

顺便说一句,这就是 2013 年推出的位置 api 的新方式:location api new

于 2013-05-30T19:07:49.840 回答