如何知道定位模式是Android中的WIFI还是2G/3G手机信号塔?

fly*_*pen 2 android geolocation android-wifi

我们知道Android中有两种定位模式:GPS和网络.如果我们使用网络,那么Android可以使用WIFI或2G/3G小区塔来定位.没有GPS,我们可以简单地使用LocationManager.NETWORK_PROVIDER来获取位置数据.但是我们怎么能知道模式是WIFI还是2G/3G小区塔呢?Android不为WIFI和手机信号塔提供单独的提供商.

我想过一个方法.但我不确定它是否正确.请复习并发表评论:

  1. 检查我是否可以获得WIFI热点列表.如果列表中没有任何内容,则必须使用单元塔.
  2. 如果有一些WIFI热点,并且准确度很高(<= 100m),则可能使用WIFI.如果精度低,仍然使用电池塔?

据我了解,WIFI定位的准确性相对较高.但它的正常范围是什么?另一个问题,Android是否同时使用WIFI和手机信号塔?如果是,那么在我的应用程序中,我可以认为它使用WIFI,而不是手机信号塔.

谢谢!

Kun*_*Foo 5

实际上,有一种方法可以做到这一点.它不仅记录良好,因此也可能在没有通知的情况下改变.您可以通过网络位置提供程序位置更新额外数据获取使用的位置估计方法.

Bundle extras = location.getExtras();
if (extras.containsKey("networkLocationType")) {
    String type = extras.getString("networkLocationType");
    if (type .equals("cell")) {
        // Cell (2G/3G/LTE) is used.
    } else if (type .equals("wifi")) {
        // Wi-Fi is used.
    }
}
Run Code Online (Sandbox Code Playgroud)