Android - Как вывести телефон из спящего режима, чтобы сделать снимок?

Я хочу делать снимки с камеры устройства Android периодически в течение нескольких часов, чтобы создать эффект замедленной съемки.

Я установил Диспетчер аварийных сигналов с флагом AlarmManager.RTC_WAKEUP, установленным для запуска службы каждые несколько минут.

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

Действие создается (или возобновляется), включается собственная блокировка пробуждения и настраивается поверхность предварительного просмотра камеры. После настройки поверхности вызывается метод SurfaceChanged () слушателя SurfaceHolder, который, наконец, делает снимок.

Если устройство не спит, все работает идеально, как ожидалось. Но если устройство спит, после завершения метода Activity onResume () действие немедленно приостанавливается. Поверхность предварительного просмотра камеры никогда не завершает инициализацию, и изображение никогда не будет сделано.

Итак, у меня есть следующие вопросы:

  1. Есть ли способ вывести телефон из режима сна программным способом? Я даже пытаюсь использовать:

     PowerManager powerManager = что наконец делает снимок. 

    Если устройство не спит, все работает как положено. Но если устройство спит, после завершения метода Activity onResume () действие немедленно приостанавливается. Поверхность предварительного просмотра камеры никогда не завершает инициализацию, и изображение никогда не будет сделано.

    Итак, у меня есть следующие вопросы:

    1. Есть ли способ вывести телефон из режима сна программным способом? Я даже пытаюсь использовать:

       PowerManager powerManager = что наконец делает снимок. 

      Если устройство не спит, все работает как положено. Но если устройство спит, после завершения метода Activity onResume () действие немедленно приостанавливается. Поверхность предварительного просмотра камеры никогда не завершает инициализацию, и изображение никогда не будет сделано.

      Итак, у меня есть следующие вопросы:

      1. Есть ли способ вывести телефон из режима сна программным способом? Я даже пытаюсь использовать:

         PowerManager powerManager = 

        1. Можно ли программно разбудить телефон? Я даже пытаюсь использовать:

           PowerManager powerManager = 

          1. Есть ли способ программно разбудить телефон? Я даже пытаюсь использовать:

             PowerManager powerManager =
             (PowerManager) this.getSystemService (Context.POWER_SERVICE);
            powerManager.userActivity (SystemClock.currentThreadTimeMillis (), ложь);
            

          Но это не разбудит телефон, если он спит.

          1. Есть ли способ сделать снимок без предварительного просмотра поверхности?

          2. Есть ли способ сделать снимок, который не работает. полагаться на асинхронные обратные вызовы? Могу ли я поместить весь код в метод Activity onResume (), чтобы сделать снимок?

          3. Есть ли способ, чтобы метод Activity onResume () работал достаточно долго, чтобы предварительный просмотр камеры имел достаточно времени для инициализации и вызова всех слушатели?

          Я правильно использую wakelocks, и у меня правильно установлены все разрешения в файле манифеста. Моя активность недостаточно долго просыпается для правильной работы асинхронных слушателей.

          И, чтобы усугубить проблему, я пытаюсь сохранить все совместимое с Android 1.6, потому что это единственное тестовое устройство, к которому у меня есть доступ.

          Это неприятная штука!

9
задан Marian Paździoch 18 March 2015 в 10:25
поделиться