我已经给了所有相机和麦克风的许可。为iframe启用元标记中的CSP。仍然无法获得许可的相机和麦克风在getusermedia为iframe。
home.html
离子含量class=的填充子头class==‘class=3’>
app-component.ts
constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private androidPermissions: AndroidPermissions)
{
platform.ready().then
(() =>
{
statusBar.styleDefault();
splashScreen.hide();
this.androidPermissions.requestPermissions([
this.androidPermissions.PERMISSION.CAMERA,
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS,
this.androidPermissions.PERMISSION.RECORD_AUDIO
]);
//navigator.mediaDevices
navigator.mediaDevices
.getUserMedia({
audio: true,
video: true
})
.then(mediaStream => {
console.log("Video camera platform ready")
});
});
}AndroidManifest.xml
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="26" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />发布于 2018-10-31 09:20:01
更新- 04/11/2018 -工作离子示例
正如我所承诺的,我今天对此很感兴趣。现在要完整地回答您的问题:是的,您可以在Android.上访问离子内的getUserMedia。
有关工作示例和屏幕截图,请参阅我的GitHub项目这里。
请参见此特性分支这里,它成功地在iframe中测试了getUserMedia。
所涉步骤:
您还可以看到React Native、原生Android和科多瓦的替代版本。
到目前为止,由于苹果对WKWebView和UIWebView的安全限制,对WKWebView和UIWebView的支持仍然是否定的。
Iframes:确保getUserMedia在其内部工作,确保:
<iframe allow="camera; microphone">有关iframe功能的更多信息,请阅读以下内容:
是的,理论上是可以的。请参阅下面关于如何在Android中执行此操作的示例。对于iOS,由于WKWebView的限制,目前不可能这样做。我已经链接到一个StackOverFlow问题,关于人们是如何在科多瓦实现这一目标的,Ionic是以它为基础的。
无论框架如何,让getUserMedia在安卓上工作需要实现的核心主要步骤是:
你具体面对的问题是4.或5,看起来这个项目让你走得那么远。权限错误很可能是由于您的应用程序使用的Chrome WebView没有覆盖该权限,而且/或者是的,而且用户没有手动启用该权限。
因此,在Ionic框架中,您需要扩展它的浏览器来访问覆盖onRequestPermissionsResult。为此,您需要制作一个Cordova插件,然后创建Ionic绑定。
有关类似框架的更多相关内容,请参见以下内容:
发布于 2018-09-28 14:54:33
在Android浏览器中。Navigator.mediaDevice.getUserMedia()只支持Chrome 52。请检查您的铬浏览器版本。
您可以使用cordova插件-媒体cordova插件录制音频文件.
https://stackoverflow.com/questions/52557767
复制相似问题