Плагин Cordova Media-Capture не работает

#javascript #cordova #cordova-plugins #cordova-media-plugin #mediacapture

Вопрос:

я создал простое тестовое приложение cordova для тестирования плагина media-capture, при нажатии кнопки записи звука, захвата изображения или записи видео ничего не происходит

Ниже приведены плагины, которые я установил в каталоге проекта cordova: введите описание изображения здесь

Ниже приведен код для HTML — файла

  <button id = "audioCapture">AUDIO</button>
 <button id = "imageCapture">IMAGE</button>
 <button id = "videoCapture">VIDEO</button>
 

Ниже приведен код для файла JS, в котором я добавил функции захвата звука, захвата изображения и захвата видео соответственно.

 document.getElementById("audioCapture").addEventListener("click", audioCapture);
document.getElementById("imageCapture").addEventListener("click", imageCapture);
document.getElementById("videoCapture").addEventListener("click", videoCapture);
function audioCapture() {
    var options = {
        limit: 1,
        duration: 10
    };
    navigator.device.capture.captureAudio(onSuccess, onError, options);

    function onSuccess(mediaFiles) {
        var i, path, len;
        for (i = 0, len = mediaFiles.length; i < len; i  = 1) {
            path = mediaFiles[i].fullPath;

        }
    }

    function onError(error) {
        navigator.notification.alert('Error code: '   error.code, null, 'Capture Error');
    }
}

function imageCapture() {
    var options = {
        limit: 1
    };
    navigator.device.capture.captureImage(onSuccess, onError, options);

    function onSuccess(mediaFiles) {
        var i, path, len;
        for (i = 0, len = mediaFiles.length; i < len; i  = 1) {
            path = mediaFiles[i].fullPath;

        }
    }

    function onError(error) {
        navigator.notification.alert('Error code: '   error.code, null, 'Capture Error');
    }
}

function videoCapture() {
    var options = {
        limit: 1,
        duration: 10
    };
    navigator.device.capture.captureVideo(onSuccess, onError, options);

    function onSuccess(mediaFiles) {
        var i, path, len;
        for (i = 0, len = mediaFiles.length; i < len; i  = 1) {
            path = mediaFiles[i].fullPath;

        }
    }

    function onError(error) {
        navigator.notification.alert('Error code: '   error.code, null, 'Capture Error');
    }
}
 

Ответ №1:

Cordova должна быть полностью загружена для использования API устройства

Для этого cordova предоставляет события deviceready

В теле HTML добавьте onload функцию

 <body onload="onLoad()">
 

в JS

 function onLoad() {
  document.addEventListener("deviceready", onDeviceReady, false);
}

// ready to use device APIs
function onDeviceReady() {
   console.log(navigator.device);
   // document.getElementById("audioCapture").addEventListener("click", audioCapture);
}
 

Комментарии:

1. Здравствуйте, спасибо, что ответили мне. Я делал это до сих пор, но это не сработало.