webaudio 无法在 android 设备上使用 ionic 使用人行横道
webaudio not working with ionic using crosswalk on android device
我创建了一个离子 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)
所以,为什么 crosswalk 声称 webrtc 和 webaudio 正在工作,但只有视频在我的应用程序上工作,而不是音频??
由于缺少其他设备,该应用仅在两台 armv7 android 智能手机上进行了测试,我不能说在 x86 上会发生什么。
感谢您的回答,因为我真的需要知道我的方向是否正确,或者只是回退到本机代码。
找到了。这与人行横道无关,这是一个权限问题。刚刚将以下行添加到权限列表中,视频和音频都工作正常。
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
我创建了一个离子 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)
所以,为什么 crosswalk 声称 webrtc 和 webaudio 正在工作,但只有视频在我的应用程序上工作,而不是音频??
由于缺少其他设备,该应用仅在两台 armv7 android 智能手机上进行了测试,我不能说在 x86 上会发生什么。
感谢您的回答,因为我真的需要知道我的方向是否正确,或者只是回退到本机代码。
找到了。这与人行横道无关,这是一个权限问题。刚刚将以下行添加到权限列表中,视频和音频都工作正常。
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />