2013-08-02 39 views
0

請求粗略位置時是否有排除WIFI的方法?我不想使用GPS,因爲功耗和更長的時間,以足夠的位置。從NETWORK_PROVIDER中排除WIFI

但我只需要從手機塔獲取位置。 NETWORK_PROVIDER模式也使用谷歌在其數據庫上的WIFI(接入點MAC地址)。我不想使用這些。有沒有辦法從NETWORK_PROVIDER中排除WIFI?

謝謝!獲得此的

+0

爲什麼有什麼特別的理由? – ianhanniballake

回答

2

一種方法是使用PASSIVE_PROVIDER,這是說here

用於接收地點,而無需實際啓動位置鎖定的一個特殊的位置提供。

此提供可用於被動地接收位置更新時 其他應用程序或服務要求他們實際上不 請求自己的位置。該提供商將返回由其他提供商生成的地點 。您可以查詢getProvider()方法 以確定位置更新的來源。需要 權限ACCESS_FINE_LOCATION,但如果GPS未啓用 此提供程序可能只返回粗略修正。

常數值: 「被動」

一個獲得一定的方式,你想要的是以下幾點:

if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) { 
    //mobile 
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) { 
    //wifi 
} 

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

State mobile = conMan.getNetworkInfo(0).getState(); 
State wifi = conMan.getNetworkInfo(1).getState(); 

之後,您可以通過區分它們

檢查,如果移動或wifi連接,如果wifi - 然後使用PASSIVE_PROVIDER,如果是移動的 - 使用NETWORK_PROVIDER

乾杯:)