2015-03-19 3 views
0

У меня есть приложение с активностью, которая записывает видео. Вид активности имеет кнопку запуска и графику/текст таймера. Поэтому, когда нажата кнопка записи, она начинает записывать видео, меняет кнопку на значок остановки записи и каждую секунду обновляет текстовое окно таймера. Когда кнопка питания нажата, и экран выключается, активность останавливается и запись прекращается. Когда я верну экран назад, действие сбрасывается, чтобы начать запись снова.Активность приложения/службы Android активна, когда экран выключен

Вопрос в том, как включить активность, которая прикреплена к виду, оставаться активным после выключения/блокировки экрана.

Я читал о создании службы, но могу ли вы подключить представление к службе, чтобы время и остановка элементов пользовательского интерфейса поддерживались надлежащим образом, когда экран активен снова; т.е. если я начинаю записывать таймер, текст начинает увеличиваться каждую секунду, если после 5 секунд записи я блокирую экран, а через 5 секунд активирую экран, можно активировать активность, чтобы таймер и т. д. продолжал работать в фоновом режиме и теперь отображается 15 секунд.

Любая помощь очень ценится

ответ

1

Попробуйте использовать IntentService и выполнять длительные операции в отдельном потоке, если это необходимо. Используйте Messenger, EventBus, широковещательный приемник для обновления вашего пользовательского интерфейса от службы. Вы также можете установить Process.setThreadPriority (Process.THREAD_PRIORITY_BACKGROUND) в методе onHandleIntent() службы намерений.

+0

Благодарим за это, множество интересных битов для поиска здесь, так что хороший набор ключевых слов для google, особенно IntentService. Я нашел эту [ссылку] (http://stackoverflow.com/questions/2463175/how-to-have-android-service-communicate-with-activity) на основе ваших намеков, которые дают много чтения, чтобы продвинуть то, что я хотеть сделать. – Diplonics

+0

@ Diplonics Если это помогло, проголосуйте за ответ :) – kamal2305

1

Вам, скорее всего, потребуется запросить блокировку слежения, чтобы процессор не заснул. См. Документацию на Android по адресу Wake Locks.

Вы также захотите запросить приоритет переднего плана в своем сервисе, чтобы убедиться, что Android его не убивает (обратите внимание: он все равно убьет его, но только в самых экстремальных условиях). См. Документацию на Android по адресу Running a Service in the Foreground.

+0

Спасибо за это. У меня был набор блокировки слежения следующим образом: , который заставлял устройство оставаться в режиме ожидания, но он убивает батарею. Однако даже с этим набором, если я нажму кнопку питания, чтобы заблокировать устройство, и была начата запись, он просто остановил запись. – Diplonics

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