0

请求粗略位置时有没有办法排除WIFI?由于功耗和获取位置所需的时间较长,我不想使用 GPS。

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

谢谢 !

4

1 回答 1

2

获得此信息的一种方法是使用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

干杯:)

于 2013-08-02T06:02:15.740 回答