Не удается получить доступ к камере устройства на Cordova / PhoneGap - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь подключиться к камере устройства. Все отлично работает в браузере, но не в 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 голосов
/ 29 апреля 2018

Что вы видите в выводе консоли при отладке приложения, работающего на устройстве? Вы можете убедиться в этом, развернув приложение с помощью Visual Studio 2017 и инструментов Apache Cordova, попробуйте. Так называемой браузерной платформы недостаточно для того, чтобы что-то тестировать, вы должны отлаживать на реальных устройствах.

...