2011-05-11 80 views
1

在我的應用程序中,我使用GPS偵聽器。我需要關閉GPS並稍後啓動。目前我使用如何在實施GPS時避免電池消耗?

locationManager.removeUpdates(locationListener);

關閉GPS。這將關閉GPS。但後來我無法打開它?還有其他方法可以關閉gps嗎?

爲了激活GPS我使用

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, updatesInterval, 0, locationListener); 
+0

做ü想API開啓GPS或任何其他APIS關閉GPS? – Krishnan 2011-05-11 13:26:36

+0

不。我想在應用程序啓動時打開GPS,並在應用程序進入背景時想要關閉GPS。我可以檢查應用程序是在前臺還是在後臺。但不知道如何關閉和在GPS上。 – includeMe 2011-05-12 04:54:15

回答

1

我想要的GPS返回最精確的值。因此,我將requestLocationUpdates函數的minValue和minDistance值設置爲0.

然後要解決電池消耗問題,我將在應用程序進入前臺時啓動和停止gps(這是一項服務),以及應用進入後臺。

要啓動GPS我在服務的OnCreate使用

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 

要結束GPS i的服務的使用的onDestroy

locationManager.removeUpdates(locationListener); 

你要做一個服務的全球定位系統的啓動和停止,這樣就可以啓動和停止位置監聽器相同的實例,否則這件事情會明顯錯誤

+1

我注意到你必須非常小心,有時雖然它出現onDestroy沒有被調用,並且可能導致胭脂gps位置偵聽器,吸電池。我嘗試將自己的班級作爲一個單身人士來實施,但是這並不起作用,因爲一個活動的停止在另一個活動的開始之後實際上會發生......所以這是行不通的。我希望有一個簡單的解決方案可以讓GPS在整個應用程序生命週期中都可用,並保證在完成之後將其殺死。我想我可以創建一個監聽器列表,如果用戶退出,它會將它們全部殺死...... hrrm .. – Chrispix 2011-07-26 01:29:37

+0

如果您在擴展Application的類中設置位置偵聽器,將其創建爲單例,並且可以訪問從每一個活動,只要通過獲取應用程序實例?就像那樣,你可以在整個應用生命週期中使用gps – 2014-06-18 14:39:43

5

你可以讓它們實現位置監聽器 所以服務時永遠要啓動位置監聽器,那麼你可以開始服務,並把

ocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, updatesInterval, 0, locationListener); 

線onCreate()方法

,當你想關閉位置更新的一站式服務 和放線

locationManager.removeUpdates(locationListener); 

到onDistroy()方法

+1

請記住微調** updatesInterval **以優化電池的使用。 – berni 2011-05-19 10:39:04

+1

updatesInterval是位置管理器將檢查位置發生變化的持續時間,因此如果您想優化電池,那麼只需將updatesInterval值保持爲較大,以便優化電池 – Dharmendra 2011-05-19 10:43:37

+1

您還可以將第三個參數設置爲「0」電池優化的價值,因爲位置管理器將更新您的位置,如果你覆蓋了距離最後一個位置的距離 – Dharmendra 2011-05-19 10:47:20