webaudio не работает с ionic, используя пешеходный переход на устройстве Android

Я создал ионное приложение webrtc, которое отлично работает при использовании ionic serve (в веб-браузере это нормально). но вообще не работал на устройстве, так как функция getUserMedia не могла выполняться.

Решение, которое я нашел, состоит в том, чтобы установить пешеходный переход, обновить разрешения в AndroidManifest.xml и добавить метатег в index.html для безопасности контента: <meta http-equiv="Content-Security-Policy: media-src: 'self' mediastream">

Теперь у меня есть работающее приложение ionic webrtc, но только видео, звук не работает. приложение для Android может воспроизводить видео со звуком, но, похоже, отправляет только видео без звука!

Мои настройки:

Разрешения для файла AndroidManifest.xml :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />

Вывод команды ionic info :

Your system information:

Cordova CLI: 5.4.1
Gulp version:  CLI version 3.9.0
Gulp local:
Ionic Version: 1.2.4
Ionic CLI Version: 1.7.13
Ionic App Lib Version: 0.6.5
OS: Windows 8.1
Node Version: v0.12.2

Вывод команды ionic browser list:

iOS - Browsers Listing:

Not Available Yet - WKWebView
Not Available Yet - UIWebView


Android - Browsers Listing:


Available - Crosswalk - ionic browser add crosswalk
         Version 8.37.189.14 Published
         Version 9.38.208.10 Published
         Version 10.39.235.15 Published
         Version 11.40.277.7 Published
         Version 12.41.296.5 Published
(beta)   Version 13.42.319.6 Published
(canary) Version 14.42.334.0 Published

Available - Crosswalk-lite - ionic browser add crosswalk-lite
(canary) Version 10.39.234.1 Published
(canary) Version 10.39.236.1 Published

Available - Browser (default) - ionic browser revert android
Not Available Yet - GeckoView

Содержимое файла ionic.project :

{
  "name": "WebRtc app",
  "app_id": "",
  "browsers": [
    {
      "platform": "android",
      "browser": "crosswalk",
      "version": "16.45.421.19"
    }
  ]
}

чего я не понимаю, так это того, что в файле README.md в папке плагина пешеходного перехода я могу прочитать следующее:

    ### Benefits

* WebView doesn't change depending on Android version
* Capabilities: such as WebRTC, WebAudio, Web Components
* Performance improvements (compared to older system webviews)

Итак, как получается, что пешеходный переход утверждает, что webrtc и webaudio работают, но в моем приложении работает только видео, а не звук??

За неимением других устройств, приложение тестировалось только на двух Android-смартфонах armv7, не могу сказать, что происходит на x86.

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


person dafriskymonkey    schedule 11.02.2016    source источник


Ответы (1)


Нашел. Это не имело никакого отношения к пешеходному переходу, это была проблема с разрешением. Просто добавил следующую строку в список разрешений, и видео и звук работают нормально.

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
person dafriskymonkey    schedule 11.02.2016
comment
У меня такая же проблема, но я не смог решить ее таким образом. (Хотя работает с плагином Crosswalk-cordova) - person 000000000000000000000; 04.09.2016
comment
Привет, у тебя где-нибудь есть образец твоего кода? У меня точно такая же проблема (с использованием библиотеки Twilio Video JS), но добавление разрешения MODIFY_AUDIO_SETTINGS не помогло. Я уже во время выполнения прошу RECORD_AUDIO и CAMERA и, как и вы, камера работает нормально. Аудио работает только при тестировании в браузере. - person Nicholas Kreidberg; 03.07.2017
comment
@NicholasKreidberg как насчет этой строки <uses-permission android:name="android.permission.RECORD_VIDEO" />? - person dafriskymonkey; 03.07.2017
comment
@dafriskymonkey Не более чем через 5 минут после публикации моего комментария я наконец понял это. Мне не нужно было добавлять RECORD_VIDEO (не так ли?), но мне пришлось изменить порядок, в котором я запрашивал разрешения на аудио. Сначала MODIFY_AUDIO_SETTINGS, затем RECORD_AUDIO. Спасибо! - person Nicholas Kreidberg; 03.07.2017
comment
@NicholasKreidberg о! Я даже не знал, что порядок имеет значение, приятно знать, спасибо и тебе, приятель. - person dafriskymonkey; 04.07.2017