我的應用程序請求將「minTime」設置爲2秒的位置更新。當「移動數據」打開(在手機的設置中)並啓用GPS時,應用程序會使用5到10兆字節每小時的「移動數據」。這在ICS「數據使用」屏幕中記錄爲「Android OS」的使用情況。如何使用「移動數據」停止Android GPS
在試圖防止這種情況我已經取消選中設置 - >「位置服務」 - >「谷歌的位置信息服務」。這是指輔助GPS,還是比這更重要?無論如何,這似乎對我的應用程序的互聯網訪問沒有任何影響。
隨着進一步的確認,這是我的應用程序的GPS的使用是造成我觀察到,在狀態欄上的網絡數據活動指示燈顯示活動時,只有當GPS指示符存在的移動數據接入。
防止這種移動數據使用的唯一方法似乎是切換「移動數據」關閉,GPS的精度似乎是幾乎不支持移動數據的一樣好。但是,必須關閉移動數據顯然是不滿意的。
Manifest中的唯一權限是「android.permission.ACCESS_FINE_LOCATION」(和「android.permission.WRITE_EXTERNAL_STORAGE」),所以該應用程序沒有使用互聯網數據的明確權限。
的的LocationManager代碼
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setSpeedRequired(false);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(true);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
bestProvider = lm.getBestProvider(criteria, true);
if (bestProvider != null) {
lm.requestLocationUpdates(bestProvider, gpsMinTime, gpsMinDistance, this);
的reference for LocationManager.getBestProvider說
如果沒有提供符合標準,該標準被鬆開......請注意,貨幣成本的要求不在此刪除處理。
但是,儘管將setCostAllowed設置爲false,應用程序仍會產生潛在的貨幣成本。
還有什麼可以阻止應用程序使用移動數據?
「Google的位置服務」不是A-GPS。這是他們基於收集的WIFI ssids等的位置數據庫。 A-GPS無法關閉,因爲它是Android的核心。一些自定義固件,如三星可能會允許這樣做,但AOSP不會。 – lahsrah
感謝您的意見。 setCostAllowed(false)做了什麼並不妨礙位置管理器使用互聯網數據? – prepbgg
嗯好點。我不知道這個setCostAllowed的東西。也許有更多Android知識的人可以深入Android代碼,看看它究竟做了什麼。 – lahsrah