Страница 1 из 1
Спящий режим смартфона
Добавлено: 01 ноя 2012, 12:32
neoksi
Доброго дня форумчане! =)
Сталкивались вы с проблемой определения спящего режима у устройств под Андроид? Если да, то приведите пожалуйста ваши варианты решения, чтоб мне не изобретать велосипед
Задача у меня простая на первый взгляд:
Когда пользователь взаимодействует с устройством у АлармМенеджера должен быть один интервал срабатывания, а когда пользователь к примеру положил телефон в карман, перестал взаимодействовать, то интервал АлармМенеджера меняется на больший.
Можно ли такое сотворить с помощью стандартных броадкастов?
Re: Спящий режим смартфона
Добавлено: 01 ноя 2012, 15:11
AndreyI
Re: Спящий режим смартфона
Добавлено: 01 ноя 2012, 22:55
neoksi
Это только при активном активити.
Re: Спящий режим смартфона
Добавлено: 02 ноя 2012, 01:01
AndreyI
Работает и в сервисе, специально проверил. Для чистоты эксперимента сервис запускал в отдельном процессе и убивал Activity. Логи включения/отключения экрана приходили четко.
Для BroadcastReceiver разницы нет, где его зарегистрируешь там и будет работать, хоть в Activity, хоть в сервисе.
Re: Спящий режим смартфона
Добавлено: 02 ноя 2012, 13:10
neoksi
Тобишь, ты предлагаешь создать отдельный сервис в отдельном процессе от приложения, функцией которого будет просто генерирование Броадкастов для основного приложения о включении и выключении экрана?
Re: Спящий режим смартфона
Добавлено: 02 ноя 2012, 22:37
AndreyI
Бродкасты передает система, их нужно только отлавливать. Зачем их куда-то еще перенаправлять, если можно получать их там, где они нужны?
Re: Спящий режим смартфона
Добавлено: 03 ноя 2012, 07:57
neoksi
AndreyI писал(а):Бродкасты передает система, их нужно только отлавливать. Зачем их куда-то еще перенаправлять, если можно получать их там, где они нужны?
Все понял, просто эти броадкасты не объявить в манифесте. А нужно регистрировать по ходу выполнения программы.
Re: Спящий режим смартфона
Добавлено: 03 ноя 2012, 11:50
AndreyI
И не нужно объявлять в манифесте,
Кроме того, можно не оформлять его отдельным классом (как в примере), а сделать встроенным или даже анонимным.
Вот этот код у меня прекрасно работает на устройстве (SGS2) как в активити, так и в фоновом сервисе, без всяких объявлений в манифесте:
Код: Выделить всё
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver br= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Log.d("MyLog", "Screen ON");
}else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
Log.d("MyLog", "Screen OFF");
}
}
};
registerReceiver(br, filter);
Re: Спящий режим смартфона
Добавлено: 08 ноя 2012, 12:49
neoksi
AndreyI
Спасибо, воспользовался твоим способом
