请求粗略位置时有没有办法排除WIFI?我不想使用GPS,因为耗电量和使用该位置所需的时间更长。
但我需要从手机信号塔获取位置。 NETWORK_PROVIDER模式还使用谷歌在其数据库上的WIFI(接入点MAC地址)。我不想用那些。有没有办法从NETWORK_PROVIDER中排除WIFI?
谢谢!
答案 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
。
干杯:)