请求粗略位置时有没有办法排除WIFI?由于功耗和获取位置所需的时间较长,我不想使用 GPS。
但我只需要从手机信号塔获取位置。NETWORK_PROVIDER 模式还使用谷歌在其数据库中的 WIFI(接入点 MAC 地址)。我不想用那些。有没有办法从 NETWORK_PROVIDER 中排除 WIFI?
谢谢 !
请求粗略位置时有没有办法排除WIFI?由于功耗和获取位置所需的时间较长,我不想使用 GPS。
但我只需要从手机信号塔获取位置。NETWORK_PROVIDER 模式还使用谷歌在其数据库中的 WIFI(接入点 MAC 地址)。我不想用那些。有没有办法从 NETWORK_PROVIDER 中排除 WIFI?
谢谢 !
获得此信息的一种方法是使用PASSIVE_PROVIDER
,如此处所述:
一种特殊的位置提供程序,用于在不实际启动位置修复的情况下接收位置。
当其他应用程序或服务请求位置更新时,此提供程序可用于被动接收位置更新,而无需自己实际请求位置。该提供者将返回由其他提供者生成的位置。您可以查询 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
。
干杯:)