2013-02-28 82 views
6

我有一個應用程序在Android上運行,只使用webview顯示移動網絡應用程序,並在某些時候使用設備的GPS獲取他們的位置。找出是否啓用省電模式 - Android SDK

我有一個自定義的ChromeWebClient等,它獲得他們的位置很好,除了在節能模式啓用的設備上? 無論如何SDK/API中有我能夠確定用戶是否啓用了此功能,並相應地通知他們? 我找不到在文檔的任何所以我假設沒有,但值得一試,

乾杯,

+0

「節能模式」是什麼意思?例如 – 2013-03-04 12:51:37

+0

@RaghavSood以Galaxy S4爲例。該設備有一個「省電模式」,可以啓用,只有當這個啓用時,我有問題從Web應用程序獲取GPS位置。如果不是省電模式,我可以知道應用程序是否允許GPS位置? – theiOSDude 2013-03-04 13:33:44

+0

AFAIK,這不是官方的AOSP功能,所以公共SDK不太可能有觀察它的方法。三星可能已經添加了一個API或一個選項設置類,但我不能肯定地說。 – 2013-03-04 13:36:15

回答

5

穿筘的評論

以我的經驗三星之後,以及HTC,是以最不可預知的方式修改Android操作系統的廠商之一。他們增加了新的功能和模式,如4G切換啓動部件和「省電模式」。他們修改了記錄的SDK方法的權限要求,即在您的應用需要的三星設備上打開藍牙,並獲得額外的android.permission.BLUETOOTH權限,而Android的股票只需要android.permission.BLUETOOTH_ADMIN。還有更多。

長話短說,正如@RaghavSood指出的,「省電模式」不是官方的AOSP功能,也沒有辦法通過官方SDK檢測到它。儘管如何解決這個問題有一個可能的方法。我相信這很可能是您的應用程序在省電模式下操作不當,因爲此模式會關閉GPS。您可以確認,通過在設置中配置省電模式以禁用GPS禁用(無法更好地對此進行說明,對不起) - first link from google with steps。然後測試應用程序。它工作嗎?如果是的話,那麼你已經引發了這個問題,現在你的工作是讓用戶知道你的應用不會在沒有GPS的情況下運行。您可以將一些代碼放到您的應用程序中,以檢測是否啓用GPS服務,如果不是,則顯示警報對話框。在活動的代碼可以是這個樣子:

LocationManager lm = getSystemService(Context.LOCATION_SERVICE); 
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //Show a notification prompting user to switch on GPS. 
} 

您可以更加精細,使您的應用程序檢測設備製造商針對所有三星設備的自定義消息。

+0

我已經與你的解決方案,因爲這是可行的解決方案:)感謝您的詳細迴應:) Burrows – theiOSDude 2013-03-05 10:18:23

相關問題