尝试获取对从 HTML5 和 WebRTC 中的MediaDevices返回的MediaStream的 JavaScript 引用/承诺。
这里的 JavaScript 是在 iOS 和 Android 上的 Chrome 和 Safari 上运行的。
navigator.mediaDevices.getUserMedia(session, initRec , onErr);
这会抛出TypeError: undefined is not an object (evaluating 'navigator.mediaDevices.getUserMedia')
好吧,让我们尝试一下稍微老一点的方法:
navigator.getUserMedia(parms,initfunc,errfunc);
这会抛出TypeError: navigator.getuserMedia is not a function. (In 'navigator.getUserMedia(parms,initfunc,errfunc)', 'navigator.getUserMedia' is undefined)
注意:这两个调用都适用于桌面版本。 移动网络曾经支持录音吗?
我已授予相机和麦克风的所有权限。在 iframe 的元标记中启用 CSP。仍然无法在 iframe 的 getusermedia 中获得相机和麦克风的许可。
主页.html
ion-content class='padding has-subheader'>
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")
});
});
}
Run Code Online (Sandbox Code Playgroud)
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" />
Run Code Online (Sandbox Code Playgroud) 这发生在离子应用的Android版本中。我正在使用iframe测试getUserMedia。webrtc的演示页面给我“ GetUserMedia:不允许的错误”。我已经在AndroidManifest.xml中授予了所有权限,但仍然无法访问相机。为了获得外部网站的摄像头访问权,还有什么需要做的吗?
home.html
<ion-content class= 'padding has-subheader'>
<iframe class= 'webPage' name= "eventsPage" src="https://webrtc.github.io/samples/src/content/getusermedia/gum/">
</iframe>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
config.xml
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^2.0.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
<plugin name="cordova-plugin-camera" spec="^4.0.3" />
<plugin name="android-camera-permission" spec="^1.0.0" />
<plugin name="cordova-plugin-media" spec="^5.0.2" />
<plugin name="cordova-opentok-android-permissions" spec="^1.0.1" />
<plugin name="cordova.plugins.diagnostic" spec="^4.0.10" />
<plugin name="cordova-plugin-android-permissions" spec="^1.0.0" />
<plugin name="cordova-plugin-media-capture" spec="^3.0.2" />
<plugin name="cordova-plugin-compat" spec="^1.2.0" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
<engine name="android" spec="7.0.0" />
Run Code Online (Sandbox Code Playgroud)