Я хочу делать снимки с камеры устройства Android периодически в течение нескольких часов, чтобы создать эффект замедленного видео.
Я установил Диспетчер тревог с флагом AlarmManager.RTC_WAKEUP, чтобы запускать службу каждые несколько минут.
Служба удерживает частичную блокировку, выполняет некоторую работу, а затем вызывает приемник вещания через диспетчер аварийных сигналов, который запускает действие.
Действие создается (или возобновляется), включает собственный пробуждение и устанавливает поверхность предварительного просмотра камеры. Как только поверхность настроена, вызывается метод SurfaceChanged () слушателя SurfaceHolder, который в итоге делает снимок.
Если устройство работает, все работает отлично, как и ожидалось. Но если устройство находится в спящем режиме, после того, как метод onResume () класса Activity завершен, действие немедленно приостанавливается. Поверхность предварительного просмотра камеры никогда не завершает инициализацию, и изображение никогда не будет снято.
Итак, у меня есть следующие вопросы:
Есть ли способ программно разбудить телефон? Я даже пытаюсь использовать:
PowerManager powerManager =
(PowerManager)this.getSystemService(Context.POWER_SERVICE);
powerManager.userActivity(SystemClock.currentThreadTimeMillis(),false);
Но это не разбудит телефон, если он спит.
Можно ли сделать снимок без предварительного просмотра поверхности?
Есть ли способ сделать снимок, который не зависит от асинхронных обратных вызовов? Могу ли я поместить весь код в метод Activity onResume () для создания снимка?
Есть ли способ сохранить метод onResume () в Activity достаточно долго, чтобы у предварительного просмотра камеры было достаточно времени для инициализации и вызова всех слушателей?
Я правильно использую wakelocks, и у меня все права доступа правильно установлены в файле манифеста. Моя активность не дремлет достаточно долго, чтобы асинхронные слушатели могли нормально работать.
И, чтобы усугубить проблему, я пытаюсь сделать все, что совместимо с Android 1.6, потому что это единственное тестовое устройство, к которому у меня есть доступ.
Это неприятно!