【问题标题】:location updates through 3g通过 3g 更新位置
【发布时间】:2018-04-13 10:03:32
【问题描述】:

我正在开发一个 android 应用程序,它将每 30 秒检索一次数据并发送到服务器,因此需要移动互联网。

目前,我正在使用 GPS,但我也想使用网络提供商(wifi 和手机信号塔)。

但我的问题是android如何通过wifi检索位置信息? 如果可以从 wifi 检索位置,那么可以从我的移动互联网本身检索它吗?

如果没有,那为什么? 如果是,那么向我展示一些代码 sn-ps 以从移动互联网检索位置更新,以及大概的准确度是多少?我需要精度在 100 米以内。

我关注了这些并得到了这个疑问http://developer.android.com/guide/topics/location/strategies.html Is android application able to retrieve location info from connected WiFi hotspot AP?

【问题讨论】:

    标签: android gps android-wifi android-internet


    【解决方案1】:

    要从 NETWORK_PROVIDER 检索位置,您可以使用以下命令:

    LocationListener locationListenerNetwork = new LocationListener() {
        public void onLocationChanged(Location location) {
            timer1.cancel();
            locationResult.gotLocation(location);
            lm.removeUpdates(this);
            lm.removeUpdates(locationListenerGps);
        }
        public void onProviderDisabled(String provider) {}
        public void onProviderEnabled(String provider) {}
        public void onStatusChanged(String provider, int status, Bundle extras) {}
    };
    
    LocationManager lm;
    if(lm==null)
      lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    

    不过,这是一个基本示例,因此要区分 wi-fi 和 3g 网络,请先查看here,然后再执行上述代码:

    获得您想要的东西的一种特定方式如下:

    ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    
    State mobile = conMan.getNetworkInfo(0).getState();
    State wifi = conMan.getNetworkInfo(1).getState();
    

    之后,您可以通过以下方式区分它们:

    if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
        //mobile
    } else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
        //wifi
    }
    

    检查,如果手机或 wifi 连接,如果 wifi - 然后使用 PASSIVE_PROVIDER,如果移动 - 使用 NETWORK_PROVIDER

    我希望所有这些信息对你有用。

    【讨论】:

    • 感谢您的回复,但是 wifi 和移动数据的准确性如何?两者的准确性会相同吗?
    • 不,不一样,3g 使用三角测量,根据塔的位置,这个三角形可能非常大。然而,使用 wi-fi,路由器的位置是已知的,并且您的坐标更精确(计算出的周围半径要小得多)。
    猜你喜欢
    • 2014-12-29
    • 2023-03-03
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2016-03-01
    相关资源
    最近更新 更多