2015-03-09 2 views
4

Я пытаюсь сделать некоторые основные вещи, получив поток камеры Android с помощью getUserMedia. Насколько я понимаю, это должно поддерживаться на Android Lollipop, который я запускаю, но даже с разрешениями, разрешенными для видео и аудио, мой запрос на поток мультимедиа автоматически отклоняется.getUserMedia Android Webview Ionic

Поэтому я попытался использовать Crosswalk с Ionic, и я могу получить медиапоток. Данные просто пусты. Насколько я понимаю, это нужно поддерживать. У кого-нибудь еще есть опыт получения данных видеопотока камеры с помощью Cordova/Ionic?

+0

Вам удалось получить данные микрофона? Использование AudioContext и ScriptNode для обработки данных, но буфер содержит все нули. Установка разрешений не решила проблему. – tenbits

ответ

8

Убедитесь, что у вас есть права RECORD_AUDIO и CAMERA в платформах/Android/AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.CAMERA" /> 

Кордова заботится о необходимых разрешениях для Cordova API и добавляет их в файл манифеста, но это не делает для API HTML5.

+0

Привет, оалейник, спасибо вам за этот пост. Мое ионное приложение также пытается получитьUserMedia, но, выполнив все сказанное здесь, мое приложение на моем телефоне (Android, Nexus5) не может получить getUserMedia (я могу это увидеть, когда удаленно проверяю хром). Не могли бы вы помочь мне в этом. Это было бы очень признательно! – TGI

+0

Это сработало для меня! Мне также пришлось программно запускать приглашение принять разрешения, иначе пользователи должны были бы перейти к настройкам приложения и сделать это вручную. –

1

Проблема была зафиксирована в https://github.com/MobileChromeApps/cordova-plugin-chrome-apps-audioCapture

$ cordova plugin add cordova-plugin-chrome-apps-audiocapture --save 
$ cordova build 
$ cordova run android 

Теперь поток микрофона может быть обработан с audioContext.createScriptProcessor.

пс. Кажется, что для этой функции работать, только для разрешения RECORD_AUDIO недостаточно, плагин также использует MODIFY_AUDIO_SETTINGS

+0

Я думаю, что это просто для AudioContext - я использовал свое приложение в контексте WebRTC, поэтому вышеупомянутые разрешения работали отлично для меня. Это полезно знать! – Harangue

4

Принятый ответ определенно работал бы до изменений в разрешениях на Android. Теперь вы можете запросить использование собственных функций во время использования (что, честно говоря, имеет больше смысла, чем при запуске), поэтому я настоятельно рекомендую использовать Android Permissions plugin, который позволит вам проверять и запрашивать разрешения программно и по запросу.

Для того же случая использования, который в принятом ответе вы могли бы сделать следующее:

var permissions = cordova.plugins.permissions; 

var permList = [ 
    permissions.CAMERA, 
    permissions.RECORD_AUDIO 
]; 

permissions.requestPermissions(permList, permCallBackSuccess, permCallBackError); 

Я надеюсь, что это помогает кто-то вниз по дороге, как это спасло мне кучу времени!

+1

Спасибо человеку. В дополнение, для android 6 этого недостаточно. Также вам нужно дублировать разрешения в AndroidManifest.xml. Вот мой список разрешений: permissions.CAMERA, permissions.MICROPHONE, permissions.MODIFY_AUDIO_SETTINGS, permissions.RECORD_AUDIO, permissions.CAPTURE_VIDEO_OUTPUT, permissions.CAPTURE_SECURE_VIDEO_OUTPUT, permissions.CAPTURE_AUDIO_OUTPUT –

+0

@EugeneSnihovsky большая информация, спасибо! –

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