MediaRecorder останавливается при выключенном экране
У меня есть приложение, которое использует медиа-рекордер с микрофонным потоком. Все отлично работает за одним исключением. Когда я выключаю дисплей, он останавливает запись, а когда я снова включаю его, продолжаю запись. Это как если бы он приостанавливал поток, пока я снова не разблокирую телефон.
Я хотел бы иметь возможность продолжать запись, даже когда дисплей выключен. Я на FirefoxOs 1.3.
1 ответ
Можно отключить экран с помощью API PowerManagement.
Во-первых, можно просто выключить экран, используя этот код:
navigator.mozPower.screenEnabled = false
Это выключит экран, а также означает, что экран не будет реагировать на прикосновения к экрану. Я еще не уверен, что еще знаю, как мы можем включить экран. Впрочем, можно наблюдать за событием физических кнопок.
Другой способ - полностью отключить подсветку, эффект тот же, но сенсорный экран по-прежнему реагирует на сенсорные события.
navigator.mozPower.screenBrightness = 0
Единственная проблема заключается в том, что вам нужно иметь доступ к настройке API, чтобы отключить screen.automatic-brightness
Если вы хотите убедиться, что подсветка не будет постоянно изменяться.
var lock = navigator.mozSettings.createLock()
var req = lock.get('screen.automatic-brightness')
req.onsuccess = function () {
if (lock.result['screen.automatic-brightness']) {
lock.set({'screen.automatic-brightness': false})
navigator.mozPower.screenBrightness = 0
}
}
Большая проблема с этим решением состоит в том, что приложению необходимо добавить два разрешения: настройки и питание.
Честно говоря, это не звучит ужасно для приложения с микрофоном, которое может изменять настройки телефона, оно также может иметь доступ к управлению питанием и перезагрузке или выключению телефона и к заводским настройкам. Я думаю, что Mozilla могла бы работать над улучшением API, чтобы уменьшить разрешения, необходимые для достижения этой цели. Кроме того, эти API доступны только для сертифицированных приложений, а это означает, что невозможно продвинуть такое приложение ни на одном рынке.