从NETWORK_PROVIDER中排除WIFI

时间:2013-08-02 05:34:25

标签: android

请求粗略位置时有没有办法排除WIFI?我不想使用GPS,因为耗电量和使用该位置所需的时间更长。

但我需要从手机信号塔获取位置。 NETWORK_PROVIDER模式还使用谷歌在其数据库上的WIFI(接入点MAC地址)。我不想用那些。有没有办法从NETWORK_PROVIDER中排除WIFI?

谢谢!

1 个答案:

答案 0 :(得分:2)

获得此功能的一种方法是使用PASSIVE_PROVIDER,如here所述:

  

一个特殊的位置提供程序,用于接收位置而无需实际启动位置修复。

     

此提供程序可用于在被动时接收位置更新   其他应用程序或服务实际上请求它们   自己申请地点。此提供商将返回位置   由其他提供商生成。您可以查询getProvider()方法   确定位置更新的来源。需要   权限ACCESS_FINE_LOCATION,但是如果未启用GPS   此提供程序可能只返回粗略修复。

     

常数值:“被动”

获得所需内容的一种方式如下:

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

干杯:)