【问题标题】:Android: Getting location with mobile internet(NETWORK_PROVIDER)Android:通过移动互联网获取位置(NETWORK_PROVIDER)
【发布时间】:2014-12-29 10:58:45
【问题描述】:

我正在开发一个应用程序,它首先检查网络和 Gps 的活动,如果至少存在网络,它会尝试获取当前位置(不需要特殊精度)。 在WIFI模式下,一切正常。在 GPS 模式下(如果可用),一切也都很完美。 问题在于移动互联网(没有 WIFI/GPS)。在这种模式下,onLocationChanged 方法会在位置请求开始后给我一些坐标。准确度肯定很差。问题是我找不到 WIFI 和 MOBILE 互联网之间的区别。

..代码

private void startLocationListeners(){
    try
    {
        if (isNetworkEnabled)
        {
            if (isGPSEnabled)
            {
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, locationListener);
                Log.d("TAG", "GPS");
                }

            else{
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, locationListener);
                Log.d("TAG", "Network"); 
                }
            }
        }

    catch (Exception e)
        {
        Log.e("Error TAG : LocationManager", "problem", e);
        }
}

..这里的onLocation改变了

public void onLocationChanged(Location location) {
            stopLocationListeners();
            coordinates=String.valueOf(location.getLatitude())+","+String.valueOf(location.getLongitude());
            Toast.makeText(context, coordinates, Toast.LENGTH_SHORT).show();
            startCamera();
            }
    };

有什么建议吗?

【问题讨论】:

    标签: android locationlistener


    【解决方案1】:

    您真的要关闭 wifi 来进行测试吗?如果是这样,这正是预期的行为。

    通过向互联网发送请求“我可以看到以下 wifi 网络和手机信号塔,您能告诉我我在哪里吗?”来进行网络定位查找。当 wifi 打开时,您有很多网络,并且由于 wifi 是短距离信号,您可以很好地了解位置。如果你关闭 wifi,那么你所拥有的只是手机信号塔的位置,而且它们之间的距离要远得多,因此准确度会直线下降。

    【讨论】:

    • 我已经查过了。同样的问题。移动互联网接收不良是否可能是问题所在?另外,我在 logcat 中注意到,当我获取位置时,有时会多次触发 onLocationChanged()。我使用 stopLocationListeners() 方法来防止这种情况并获取单个位置,但它似乎不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多