无法访问Cordova / PhoneGap上的设备摄像头

时间:2018-04-28 04:34:19

标签: cordova phonegap getusermedia

我正在尝试连接设备相机。 在浏览器中一切正常,但在Cordova中没有。 控制台中没有显示错误,根本没有任何反应。 结果只是一个空的视频标签,上面有一个大的播放图标。

出现这种情况的原因以及如何解决这个问题?

HTML / CSS / JS:

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: android-webview-video-poster: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';">

    <script type="text/javascript" src="cordova.js"></script>

    <script type="text/javascript">
        document.addEventListener("deviceready", ready, false)
        function ready()
        {
            var video = document.getElementById('video');

            // Get access to the camera!
            if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
                // Not adding `{ audio: true }` since we only want video now
                navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) {
                    video.src = window.URL.createObjectURL(stream);
                    video.play();
                });
            }
        }
    </script>

</head>

<body id="body" class="wide-layout">
    <video id="video" width="640" height="480"></video>
</body>

</html>

的Config.xml:

<platform name="android">
        <allow-intent href="market:*" />
        <preference name="AndroidPersistentFileLocation" value="Compatibility" />

        <config-file parent="/*" target="AndroidManifest.xml">
            <uses-feature android:name="android.hardware.camera" />
            <uses-feature android:name="android.hardware.camera.autofocus" />
            <uses-feature android:name="android.hardware.camera" />
            <uses-feature android:name="android.hardware.camera" android:required="true" />
            <uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.CAMERA" />
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
            <uses-permission android:name="android.permission.RECORD_AUDIO" />
            <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
            <uses-permission android:name="android.permission.INTERNET" />
            <uses-permission android:name="android.permission.WAKE_LOCK" />
        </config-file>
    </platform>

插件:

cordova-plugin-android-permissions 1.0.0 "Permissions"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-file 4.3.0 "File"
cordova-plugin-media-capture 1.4.3 "Capture"
cordova-plugin-whitelist 1.3.3 "Whitelist"

1 个答案:

答案 0 :(得分:0)

调试设备上运行的应用时,您在控制台输出中看到了什么?您可以通过使用Visual Studio 2017和Apache Cordova工具部署应用程序来看到这一点,试一试。所谓的浏览器平台还不足以测试任何东西,你必须在真实的​​设备上进行调试。