2012-09-09 72 views
1

我的應用程序請求將「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,應用程序仍會產生潛在的貨幣成本。

還有什麼可以阻止應用程序使用移動數據?

+0

「Google的位置服務」不是A-GPS。這是他們基於收集的WIFI ssids等的位置數據庫。 A-GPS無法關閉,因爲它是Android的核心。一些自定義固件,如三星可能會允許這樣做,但AOSP不會。 – lahsrah

+0

感謝您的意見。 setCostAllowed(false)做了什麼並不妨礙位置管理器使用互聯網數據? – prepbgg

+0

嗯好點。我不知道這個setCostAllowed的東西。也許有更多Android知識的人可以深入Android代碼,看看它究竟做了什麼。 – lahsrah

回答

0

網絡提供商通常包括各種非GPS定位技術,諸如AGPS,WiFi和細胞三角測量,或它們的任意組合。在某些設備上它們是分開的。您還可以添加被動提供者,該提供者使用存儲在其他應用中的位置。

無論如何,如果你不希望使用互聯網/ 3G,你需要禁用此功能,無論是在應用程序或最終用戶。

對於最終用戶來說,這個功能默認是關閉的,如果他選擇啓用它,他警告說,它(而不是iphone已經是默認啓用)。

+0

感謝您的回覆。如何禁用應用程序中的位置管理器互聯網訪問? – prepbgg

+0

您的意思是您希望禁用用戶特別要求啓用的設置?那麼簡單地告訴用戶應用程序在應用程序描述中使用它呢?如果他沒有啓用它,請改用gps。 GPS更準確,但需要更多的電池。 –

+0

我似乎沒有很清楚地解釋我自己。當然,用戶應該確定電話的移動數據訪問是否打開。但是,我的問題是,使用GPS的應用程序,但沒有明確的權限訪問互聯網實際上使用了許多兆字節的互聯網數據。我認爲很多用戶會對此感到驚訝,並且可能會相互交叉。我當然會。 正如上面所討論的,其中一個問題是Google爲LocationManager提供了setCostAllowed設置,但它的工作原理並不明顯(或者它是否可以依賴)。 – prepbgg