【问题标题】:Android NETWORK_PROVIDER locationAndroid NETWORK_PROVIDER 位置
【发布时间】:2013-05-29 10:21:25
【问题描述】:

我在使用 NETWORK_PROVIDDER 获取当前位置方面没有什么问题。

我的代码如下所示:

LocationManager lMgr = (LocationManager) context
    .getSystemService(Context.LOCATION_SERVICE);
boolean isNetworkProviderEnabled = lMgr
    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

Location location = lMgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
    // deal somehow with last (very likely outdated location)
}

if (isNetworkProviderEnabled) {
    lMgr.requestLocationUpdates(provider, 0, 0, locationListener);
}

当然,我有处理位置变化的 MyLocationListener 并且 所有必需的权限都添加到清单中

问题是,在某些手机上,此代码的作用就像是魅力一样,但在其他手机上,“requestLocationUpdates”完全没有任何作用。当然,在那些有问题的手机上,当我打开 Google 地图应用程序时,我的 当前 位置会立即出现。所以我的问题是(我相信谷歌的人应该回答这个问题):谷歌地图如何立即检索当前位置,而其他应用程序却没有?我的代码错了吗?当然,我在许多 stackoverflow 问题中都看到过这样的代码。如果有人想知道,这种问题出现在一些三星 Galaxy Nexus S 手机上

在我的应用程序中,GPS 不用于节省电池电量,但启用了定位服务。

【问题讨论】:

    标签: android networking location


    【解决方案1】:

    我最近遇到了同样的问题,LocationManager 有问题,并且没有在三星手机上完全实现。它们也消耗大量电力。使用LocationClient 解决这两个问题。 LocationClient 使用所有可用的方法为您提供最后一个位置,因此它是您所有提供程序和传感器的超级集合。

    我遇到了三星 Y 型手机的问题,我想知道您在谈论哪些手机。为了解决三星手机的问题,我用

    启动了手机上的 GPS
    HomeScreen.getLocationManager().requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
            }
            @Override
            public void onProviderEnabled(String provider) {
            }
            @Override
            public void onProviderDisabled(String provider) {
            }
            @Override
            public void onLocationChanged(final Location location) {
            }
        });
    

    然后调用LocationManager.getLastKnownLocation 或新的locationClient.getLastLocation api。

    1. 首先,只需将以上几行添加到您的 getLastKnownLocation 上。事情应该会神奇地开始运作
    2. 当您有更多时间时迁移到 LocationClient 并再次测试。如果失败,请使用上面的魔法使其正常工作。

    【讨论】:

    • 我使用 API 10 是否需要导入任何额外的库?
    • 不,您不需要包含任何库。
    【解决方案2】:

    有时设备不会收到任何位置更新,GPS_PROVIDER 和 NETWORK_PROVIDER 返回 null。

    尝试重新启动您的设备,这个技巧对我有帮助。我的代码非常好,但提供者返回 null。

    【讨论】:

    • 重启设备最终会解决所有问题。但那是你真的应该做的事情吗?这是您应该向数百万客户推荐的东西吗? Windows 可以负担得起,由于声誉,Android 是稳定的。如果需要重新启动,您的应用程序就是罪魁祸首。修复它,不要提供“重启设备”之类的解决方法。
    猜你喜欢
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多