更新-04/11/2018-正常工作的离子示例
如所承诺的,我今天对此有所了解.现在要完全回答您的问题:是的,您可以在Android上的ionic中访问getUserMedia.
有关工作示例和屏幕截图,请参见我的GitHub项目here.
请参阅此功能分支here,该分支成功在iframe中测试了getUserMedia
涉及的步骤:
>安装离子
>离子启动getUserMedia空白
> cd getUserMedia
>离子cordova插件添加cordova-plugin-android-permissions
> npm install-保存@ ionic-native / android-permissions
> npm安装webrtc-adapter –save
>链接到angular.json脚本中的适配器(link)
>将AndroidPermissions添加到app.module.ts提供程序(link)
>在home.component.ts中创建摄像机访问代码(link)
>向config.xml和AndroidManifest.xml添加android manifiedt权限(link,如果配置未复制,请转到platform / android / app / src / AndroidManifest.xml)
>离子科尔多瓦平台添加Android
>离子科尔多瓦建立Android
>离子科尔多瓦运行Android
由于Apple对WKWebView和UIWebView的安全限制,从此更新开始,对iOS的支持仍为否.
iframe:要确保getUserMedia在其中起作用,请确保您:
>嵌入式站点的CORS需要具有允许的访问源头
>启用安全权限以访问摄像头和麦克风
请阅读以下有关iframe功能的详细信息:
是的,理论上它可以工作.请参阅下面的示例,了解如何在Android中执行此操作.对于iOS,由于WKWebView的限制,目前尚无法实现.我已经链接到下面的StackOverFlow问题,即人们如何在Ionic所基于的Cordova上实现这一目标.
无论框架如何,要使getUserMedia在Android上运行都需要实现的核心主要步骤是:
>确保您的应用是Android API 21及更高版本
>向清单添加权限(link to file)
>确保使用getUserMedia适配器以实现API兼容性
>确保将webrtc添加到Android项目gradle文件(link to file)
>覆盖Chrome WebView的权限以进行高级访问(link to file example, line 106)
>在应用程序启动时,询问用户是否有权访问相机.
您面临的具体问题是4.或5.看起来该项目使您走到了那么远.权限错误很可能是由于您的应用所使用的Chrome WebView不会覆盖该权限,并且/或者是,并且用户尚未手动启用该权限.
因此,在Ionic框架内,您需要扩展其浏览器以访问对onRequestPermissionsResult的覆盖.为此,您需要制作一个Cordova插件,然后创建Ionic绑定.
可在此处找到有关类似框架的更多信息: