getUserMedia Android Webview 离子
Posted
技术标签:
【中文标题】getUserMedia Android Webview 离子【英文标题】:getUserMedia Android Webview Ionic 【发布时间】:2015-05-10 03:17:59 【问题描述】:我正在尝试通过使用 getUserMedia 获取 android 设备的相机流来做一些基本的事情。据我了解,我正在运行的 Android Lollipop 应该支持此功能,但即使权限设置为允许视频和音频,我对媒体流的请求也会被自动拒绝。
所以我尝试使用带有 Ionic 的 Crosswalk,我可以获得媒体流。数据只是空的。据我了解,这应该得到支持。还有其他人有使用 Cordova / Ionic 获取相机视频流数据的经验吗?
【问题讨论】:
您是否成功获取了麦克风数据?使用 AudioContext 和 ScriptNode 处理数据,但缓冲区包含所有零。设置权限并没有解决问题。 【参考方案1】:确保您在platforms/android/AndroidManifest.xml 中拥有RECORD_AUDIO 和CAMERA 权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
Cordova 负责 Cordova API 的必要权限并将它们添加到清单文件中,但它不用于 html5 API。
【讨论】:
你好 oaleynik,谢谢你的这篇文章。我的 ionic 应用程序也在尝试获取用户媒体,但是在完成了这里所说的所有操作之后,我的手机(Android、Nexus5)上的应用程序无法获取 getUserMedia(从 chrome 远程检查时我可以看到它)。你能帮我解决这个问题吗?将不胜感激! 这对我有用!我还必须以编程方式触发提示以接受权限,否则用户将不得不转到应用程序设置并手动进行。【参考方案2】:在更改 Android 权限之前,接受的答案肯定会起作用。您现在可以在使用时请求使用本机功能(老实说,这比在启动时更有意义),因此我强烈建议您使用Android Permissions plugin,它允许您以编程方式和按需检查和请求权限。
对于已接受答案中的相同用例,您将执行以下操作:
var permissions = cordova.plugins.permissions;
var permList = [
permissions.CAMERA,
permissions.RECORD_AUDIO
];
permissions.requestPermissions(permList, permCallBackSuccess, permCallBackError);
我希望这对以后的人有所帮助,因为它为我节省了很多时间!
【讨论】:
谢谢伙计。此外,对于 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【参考方案3】:问题已由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
处理麦克风流。
ps。看来,要使此功能起作用,仅RECORD_AUDIO
权限是不够的,该插件还使用了MODIFY_AUDIO_SETTINGS
【讨论】:
我认为这仅适用于 AudioContext-我在 WebRTC 的上下文中使用我的应用程序,因此上述权限对我来说很好。很高兴知道这一点!以上是关于getUserMedia Android Webview 离子的主要内容,如果未能解决你的问题,请参考以下文章
(Android) / Chrome getUserMedia() 约束应该如何格式化?
undefined 不是对象(评估“navigation.mediaDevices.getUserMedia”)
React Native:Webview getUserMedia无法正常工作(onPermissionRequest覆盖?)
React Native:Webview getUserMedia 不起作用(onPermissionRequest 覆盖?)