2013-02-28 2 views
6

У меня есть приложение, работающее на Android, которое использует только веб-просмотр для отображения мобильного веб-приложения и в какой-то момент использует GPS-устройство устройства для получения своего положения.узнать, включен ли режим энергосбережения - Android SDK

У меня есть пользовательский ChromeWebClient и т. Д., И он отлично их занимает, за исключением тех устройств, на которых включен режим энергосбережения? Есть ли в SDK/API в любом случае возможность определить, включен ли пользователь, и сообщить им об этом? я ничего не могу найти в документации, так я не предполагая, но стоит выстрел,

Приветствия,

Lee

+0

Что вы подразумеваете под режимом энергосбережения? –

+0

@ RaghavSood На Галактике S4, например. устройство имеет режим энергосбережения, который можно активировать, и только когда это разрешено, у меня возникает вопрос о том, как получить местоположение GPS из веб-приложения. Если не режим энергосбережения, могу ли я узнать, разрешено ли приложению размещение GPS? – theiOSDude

+0

AFAIK, это не официальная функция AOSP, поэтому вряд ли общедоступный SDK будет иметь возможность его наблюдать. Samsung, возможно, добавил API или вариант в классы настроек, но я не могу сказать точно. –

ответ

5

После Ридинг комментарии

В моем опыте Samsung, а также HTC, является одним из производителей, которые изменяют ОС Android самыми непредсказуемыми способами. Они добавляют новые функции и режимы, такие как 4G-переключатели запуска и режим энергосбережения. Они изменяют требования к разрешению для документированных методов SDK, то есть для включения Bluetooth на устройстве Samsung, которое должно иметь ваше приложение, и дополнительном разрешении android.permission.BLUETOOTH, в то время как для Android требуется только android.permission.BLUETOOTH_ADMIN. И еще есть.

Длинный рассказ, так как @RaghavSood отметил, что «режим энергосбережения» не является официальной функцией AOSP и нет способов обнаружить его через официальный SDK. Есть возможный способ, как вы можете обойти его, хотя. Я считаю, что, скорее всего, ваше приложение не работает в режиме энергосбережения, потому что этот режим отключает GPS. Вы можете подтвердить это, настроив режим энергосбережения в настройках, чтобы отключить отключение GPS (не могу сказать это лучше, извините) - first link from google with steps. Затем проверьте приложение. Это работает? Если да, то у вас возникла проблема root, и теперь ваша задача - сообщить пользователю, что ваше приложение не будет работать без GPS. Вы можете поместить некоторый код в свое приложение, чтобы определить, включен ли сервис GPS, показывать диалоговое окно предупреждения, если это не так. Код в вашей деятельности может выглядеть следующим образом:

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

Вы можете быть еще более сложными и сделать ваше приложение обнаружить производителя устройства, чтобы показать пользовательские сообщения на всех устройствах Samsung.

+0

Я пошел с вашим решением, так как это жизнеспособное решение :) спасибо за ваш подробный ответ :) Burrows – theiOSDude

Смежные вопросы