【问题标题】:Can I differentiate Location from WiFi and from Cell Tower?我可以将位置与 WiFi 和蜂窝塔区分开来吗?
【发布时间】:2013-10-29 23:55:52
【问题描述】:

如果我使用LocationManager.NETWORK_PROVIDER,有没有办法知道触发onLocationChanged 的位置是来自WiFi 连接还是来自手机信号塔连接?

【问题讨论】:

    标签: android location wifi locationmanager


    【解决方案1】:

    你可以问

    public void onLocationChanged(Location location){
        String provider = location.getProvider(); 
    }
    

        ConnectivityManager connectivityManager = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
        //android.net.NetworkInfo
        NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        NetworkInfo mobile = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    
    
            if(wifi.isAvailable() && wifi.getDetailedState() == DetailedState.CONNECTED)
                locationProvider = LocationManager.NETWORK_PROVIDER;
            else //check if it is a tablet without 3G connection
                if(mobile!=null){
                    if(mobile.isAvailable() && mobile.getDetailedState() == DetailedState.CONNECTED)
                         locationProvider = LocationManager.PASSIVE_PROVIDER;
                }
    

    【讨论】:

    • 为什么这里要设置PASSIVE_PROVIDER,以防移动网络可用?
    • 以防万一,如果在您的应用中最重要的是从 WIFI 获得连接但它不可用,则可以连接到 3G。
    【解决方案2】:

    更新:以下答案将仅提供 GPS 或网络作为提供商。这是一个类似的问题,可能会有所帮助。 How to know the positioning mode is WIFI or 2G/3G cell tower in Android?

    您是否在 LocationListener 中使用 onLocationChanged 方法来获取坐标?如果是这样,您可以使用 location.getProvider() 方法来获取提供程序。

    LocationListner locationListner = new LocationListener(){
        public void onLocationChanged(Location location){
            String provider = location.getProvider(); 
        }
    }
    

    【讨论】:

    • 你确定我可以使用它吗?因为据我所知,选项有“gps”和“network”。
    • 你是对的。我的回答只会给你gps或网络。 “Kung Foo”认为他是答案..stackoverflow.com/a/14558518/770061
    • 我会检查其他问题中的代码并通知您。
    • 嗯,看起来“Kung Foo”提供的代码可以正常工作,但并非在我测试过的所有设备上都可以使用。
    猜你喜欢
    • 2013-01-20
    • 2013-01-05
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多