2010-06-10 25 views
3

在我開發的Android應用程序中,我需要LocationManager來給我定位修復。那一部分都很好,很好;它工作,已經有相當一段時間了,並且所有人都很高興。Android的LocationManager忽略requestLocationUpdates調用中的更改,但僅限於Droid

但是,現在我最近還添加了一項功能,允許位置跟蹤部分轉到後臺,我還希望允許它在這種情況下減慢更新以節省電池電量。實際上,我試圖這樣做的方式是通過使用新參數重新發出requestLocationUpdates調用,如果我的後臺服務檢測到沒有任何已註冊的監聽器(它向通知欄提供了某些內容,所以我仍然希望它獲得更新)。我們稱之爲「Servicemajig」服務。我這樣做的方式,總之:

private void setMode(boolean foreground) { 
    // This sets whether we're in foreground or background mode. If we're 
    // not changing anything, though, don't do anything. 
    if(foreground == mForeground) return; 

    // Set the current mode... 
    mForeground = foreground; 

    // ...and switch! 
    if(mForeground) { 
     // Foreground mode means we go full tilt. 
     Log.i(DEBUG_TAG, "Switching to foregroud mode..."); 
     mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, Servicemajig.this); 
    } else { 
     // Background mode means we slow down. Like, say, 30 seconds. 
     Log.i(DEBUG_TAG, "Switching to background mode..."); 
     mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, Servicemajig.this); 
    } 
} 

現在,這項工作,大部分。我沒有得到雙重更新(即我沒有取消註冊,但它仍然有效),在我的Nexus One和G1上,它可以根據需要正確切換背景和前景模式。也就是說,在嘗試獲得另一個定位點之前,它會正確等待約30秒(給予或帶走),從而節省電池電量。

問題出現在我在摩托羅拉Droid上測試的時候。在Droid上,一旦我把它放在後臺模式下,它將在修復之間等待30秒(再次給予或取出),但是如果它以這種方式獲得至少一個修復,它將不會返回稍後再轉到前臺模式。也就是說,即使在我重新輸入了前臺模式所需和要求的實際應用程序之後,它仍然等待每次修復30秒,除了關閉Servicemajig並重新啓動它之外,似乎無法解決此問題。日誌顯示它正在通過那部分代碼,所以它至少得到了那麼多。

所以我的問題是,這只是一個特定於Droid固件的錯誤?有什麼方法可以解決這個問題嗎?或者,這是否是正確的方式來做這樣的事情?我會注意到,如果使用registerLocationUpdates調用在if塊之前添加removeUpdates調用,則無關緊要。

+0

你有一個標準設置? – Skizit 2010-06-10 15:55:14

+0

我在這裏沒有任何情況下的Criteria集。我只是明確地使用可用的提供者。 我給出的代碼是刪節的;我還從NETWORK_PROVIDER請求位置更新,並根據每次更新來確定我接受的位置。然而,在Droid上,它甚至沒有試圖從任何提供商那裏找到一個位置,直到30秒過去。 – CaptainSpam 2010-06-10 20:07:10

回答

0

這可能聽起來很愚蠢,但是每個設備和操作系統對的行爲都不一樣,我發現了。所以雖然我沒有在Droid上看到過,但我在其他手機上看到過它。如果您可以跟蹤您是否正在偵聽更新,請刪除更新,然後再次請求更新。無論哪種情況(多個請求與請求/刪除)都沒有很好地記錄。

+0

我認爲這可能是所有這一切的結果,奇怪的未定義行爲在Droid上的實現方式與其他任何地方不同。無論如何,我最終採取了與此不同的方向,根本不需要這個。無論如何感謝您的幫助! – CaptainSpam 2011-04-18 04:06:42

相關問題