Захват

Захват

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

Важных конфиденциальности Примечание: Сбор и использование изображений, видео или аудио от устройства камеры или микрофона поднимает вопросы, важные конфиденциальности. Политика конфиденциальности вашего приложения должна обсудить, как приложение использует такие датчики и ли данные, записанные совместно с другими сторонами. Кроме того если app использование камеры или микрофона не является очевидной в пользовательском интерфейсе, необходимо предоставить уведомление just-in-time до вашего приложения, доступ к камеру или микрофон (если операционной системы устройства не так уже). Это уведомление должно обеспечивать ту же информацию, отметили выше, а также получения разрешения пользователя (например, путем представления выбора OK и Нет, спасибо). Обратите внимание, что некоторые торговые площадки app может потребоваться приложению уведомлять just-in-time и получить разрешение от пользователя до доступа к камеру или микрофон. Для получения дополнительной информации пожалуйста, смотрите в руководстве конфиденциальности.

Объекты

Методы

Сфера

The capture object is assigned to the navigator.device object, and therefore has global scope.

// The global capture object
var capture = navigator.device.capture;

Свойства

Методы

Поддерживаемые платформы

Доступ к функции

Начиная с версии 3.0 Кордова реализует интерфейсы API уровень устройства как плагины. Использование CLI plugin команды, описанные в интерфейс командной строки, чтобы добавить или удалить эту функцию для проекта:

    $ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-media-capture.git
    $ cordova plugin rm org.apache.cordova.core.media-capture

Эти команды применяются для всех целевых платформ, но изменить параметры конфигурации платформы, описанные ниже:

Некоторые платформы могут поддерживать эту функцию без необходимости специальной настройки. Смотрите поддержку платформы обзор.


capture.captureAudio

Запустите приложение аудио рекордер и возвращают сведения о файлах захватили аудио клип.

navigator.device.capture.captureAudio(
    CaptureCB captureSuccess, CaptureErrorCB captureError,  [CaptureAudioOptions options]
);

Описание

Начинает асинхронную операцию, чтобы захватить аудио записи с помощью устройства по умолчанию аудио записи приложения. Операция позволяет пользователю устройства захвата нескольких записей за один сеанс.

Операции захвата заканчивается, когда либо пользователь выходит из аудио записи приложения, или максимальное количество записей, указанный CaptureAudioOptions.limit достигается. Если не limit значение параметра указывается, по умолчанию он один (1) и захвата операция прекращается после того, как пользователь записывает один аудио клип.

По завершении операции захвата CaptureCallback выполняет с массивом MediaFile объекты, описывающие каждый захвачен файл аудио клип. Если пользователь завершает операцию перед захваченных аудио клип CaptureErrorCallback выполняет с CaptureError объект, показывая CaptureError.CAPTURE_NO_MEDIA_FILES код ошибки.

Поддерживаемые платформы

Быстрый пример

// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start audio capture
navigator.device.capture.captureAudio(captureSuccess, captureError, {limit:2});

Полный пример

<!DOCTYPE html>
<html>
  <head>
    <title>Capture Audio</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="json2.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Called when capture operation is finished
    //
    function captureSuccess(mediaFiles) {
        var i, len;
        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
            uploadFile(mediaFiles[i]);
        }
    }

    // Called if something bad happens.
    //
    function captureError(error) {
        var msg = 'An error occurred during capture: ' + error.code;
        navigator.notification.alert(msg, null, 'Uh oh!');
    }

    // A button will call this function
    //
    function captureAudio() {
        // Launch device audio recording application,
        // allowing user to capture up to 2 audio clips
        navigator.device.capture.captureAudio(captureSuccess, captureError, {limit: 2});
    }

    // Upload files to server
    function uploadFile(mediaFile) {
        var ft = new FileTransfer(),
            path = mediaFile.fullPath,
            name = mediaFile.name;

        ft.upload(path,
            "http://my.domain.com/upload.php",
            function(result) {
                console.log('Upload success: ' + result.responseCode);
                console.log(result.bytesSent + ' bytes sent');
            },
            function(error) {
                console.log('Error uploading file ' + path + ': ' + error.code);
            },
            { fileName: name });
    }

    </script>
    </head>
    <body>
        <button onclick="captureAudio();">Capture Audio</button> <br>
    </body>
</html>

Ежевика WebWorks совместимости

iOS причуды

Windows Phone 7 и 8 причуды


CaptureAudioOptions

Инкапсулирует параметры конфигурации аудио захвата.

Свойства

Быстрый пример

// limit capture operation to 3 media files, no longer than 10 seconds each
var options = { limit: 3, duration: 10 };

navigator.device.capture.captureAudio(captureSuccess, captureError, options);

Андроид причуды

Ежевика WebWorks совместимости

iOS причуды


capture.captureImage

Запустите приложение камеры и возвращают сведения о файлах образа.

navigator.device.capture.captureImage(
    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureImageOptions options]
);

Описание

Начинает асинхронную операцию для захвата изображения с помощью приложения камеры устройства. Операция позволяет пользователям захватывать более одного изображения за один сеанс.

Операции захвата заканчивается, либо когда пользователь закрывает приложение камеры, или максимальное количество записей, указанный CaptureAudioOptions.limit достигается. Если не limit указано значение, по умолчанию он один (1) и захвата операция прекращается после того, как пользователь захватывает отдельное изображение.

По завершении операции захвата он вызывает CaptureCB обратного вызова с массивом MediaFile объектов, описывающих каждый файл образа. Если пользователь завершает операцию до захвата изображения, CaptureErrorCB обратного вызова выполняется с CaptureError объекта с изображением CaptureError.CAPTURE_NO_MEDIA_FILES код ошибки.

Поддерживаемые платформы

Windows Phone 7 причуды

Вызов приложения родной камеры в то время как ваше устройство подключено через Zune не работает, и выполняет обратный вызов для ошибки.

Быстрый пример

// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start image capture
navigator.device.capture.captureImage(captureSuccess, captureError, {limit:2});

Полный пример

<!DOCTYPE html>
<html>
  <head>
    <title>Capture Image</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="json2.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Called when capture operation is finished
    //
    function captureSuccess(mediaFiles) {
        var i, len;
        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
            uploadFile(mediaFiles[i]);
        }
    }

    // Called if something bad happens.
    //
    function captureError(error) {
        var msg = 'An error occurred during capture: ' + error.code;
        navigator.notification.alert(msg, null, 'Uh oh!');
    }

    // A button will call this function
    //
    function captureImage() {
        // Launch device camera application,
        // allowing user to capture up to 2 images
        navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 2});
    }

    // Upload files to server
    function uploadFile(mediaFile) {
        var ft = new FileTransfer(),
            path = mediaFile.fullPath,
            name = mediaFile.name;

        ft.upload(path,
            "http://my.domain.com/upload.php",
            function(result) {
                console.log('Upload success: ' + result.responseCode);
                console.log(result.bytesSent + ' bytes sent');
            },
            function(error) {
                console.log('Error uploading file ' + path + ': ' + error.code);
            },
            { fileName: name });
    }

    </script>
    </head>
    <body>
        <button onclick="captureImage();">Capture Image</button> <br>
    </body>
</html>

CaptureImageOptions

Инкапсулирует параметры конфигурации захвата изображения.

Свойства

Быстрый пример

// limit capture operation to 3 images
var options = { limit: 3 };

navigator.device.capture.captureImage(captureSuccess, captureError, options);

iOS причуды


capture.captureVideo

Запустите приложение видеомагнитофон и возвращают сведения о файлах захваченного видео клип.

navigator.device.capture.captureVideo(
    CaptureCB captureSuccess, CaptureErrorCB captureError, [CaptureVideoOptions options]
);

Описание

Начинает асинхронную операцию, чтобы захватить видео записи с помощью устройства записи видео приложения. Операция позволяет пользователю захватить более чем одной записи в течение одной сессии.

Операции захвата заканчивается, когда либо пользователь выходит из приложения записи видео, или максимальное количество записей, указанный CaptureVideoOptions.limit достигается. Если не limit значение параметра указывается, по умолчанию он один (1) и захвата операция прекращается после того, как пользователь записывает один видео клип.

По завершении операции захвата его CaptureCB обратного вызова выполняется с массивом MediaFile объекты, описывающие каждый захвачен файл видео клип. Если пользователь завершает операцию до захвата видео клип, CaptureErrorCB обратного вызова выполняется с CaptureError объекта с изображением CaptureError.CAPTURE_NO_MEDIA_FILES код ошибки.

Поддерживаемые платформы

Быстрый пример

// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start video capture
navigator.device.capture.captureVideo(captureSuccess, captureError, {limit:2});

Полный пример

<!DOCTYPE html>
<html>
  <head>
    <title>Capture Video</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="json2.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Called when capture operation is finished
    //
    function captureSuccess(mediaFiles) {
        var i, len;
        for (i = 0, len = mediaFiles.length; i < len; i += 1) {
            uploadFile(mediaFiles[i]);
        }
    }

    // Called if something bad happens.
    //
    function captureError(error) {
        var msg = 'An error occurred during capture: ' + error.code;
        navigator.notification.alert(msg, null, 'Uh oh!');
    }

    // A button will call this function
    //
    function captureVideo() {
        // Launch device video recording application,
        // allowing user to capture up to 2 video clips
        navigator.device.capture.captureVideo(captureSuccess, captureError, {limit: 2});
    }

    // Upload files to server
    function uploadFile(mediaFile) {
        var ft = new FileTransfer(),
            path = mediaFile.fullPath,
            name = mediaFile.name;

        ft.upload(path,
            "http://my.domain.com/upload.php",
            function(result) {
                console.log('Upload success: ' + result.responseCode);
                console.log(result.bytesSent + ' bytes sent');
            },
            function(error) {
                console.log('Error uploading file ' + path + ': ' + error.code);
            },
            { fileName: name });
    }

    </script>
    </head>
    <body>
        <button onclick="captureVideo();">Capture Video</button> <br>
    </body>
</html>

Ежевика WebWorks совместимости


CaptureVideoOptions

Инкапсулирует параметры конфигурации захвата видео.

Свойства

Быстрый пример

// limit capture operation to 3 video clips
var options = { limit: 3 };

navigator.device.capture.captureVideo(captureSuccess, captureError, options);

Ежевика WebWorks совместимости

iOS причуды


CaptureError

Инкапсулирует код ошибки, в результате операции захвата неудачной СМИ.

Свойства

Константы


CaptureCB

Вызывается после операции захвата успешных медиа.

function captureSuccess( MediaFile[] mediaFiles ) { ... };

Описание

Эта функция выполняется после завершения операции успешного захвата. В этот момент был захвачен файл мультимедиа и либо пользователь завершил приложение захват средств массовой информации, или захват предел был достигнут.

Каждый MediaFile объект описывает захваченных медиа-файлов.

Быстрый пример

// capture callback
function captureSuccess(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

CaptureErrorCB

Вызывается, если ошибка возникает во время операции захвата средств массовой информации.

function captureError( CaptureError error ) { ... };

Описание

Эта функция выполняется, если возникает ошибка при попытке запуска операции захвата мультимедиа. Сценарии сбоев включают когда захват приложение занято, операции захвата уже имеет место, или пользователь отменяет операцию, прежде чем любой медиа-файлы записываются.

Эта функция выполняет с CaptureError объект, содержащий соответствующие ошибкиcode.

Быстрый пример

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

ConfigurationData

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

Описание

Описывает режимы захвата мультимедиа поддерживается устройством. Данные конфигурации включает в себя тип MIME и размеры захвата для захвата видео или изображения.

Типы MIME должны присоединиться к RFC2046. Примеры:

Свойства

Быстрый пример

// retrieve supported image modes
var imageModes = navigator.device.capture.supportedImageModes;

// Select mode that has the highest horizontal resolution
var width = 0;
var selectedmode;
for each (var mode in imageModes) {
    if (mode.width > width) {
        width = mode.width;
        selectedmode = mode;
    }
}

Не поддерживается на любой платформе. Все массивы данных конфигурации являются пустыми.


MediaFile

Инкапсулирует свойства файла захвата мультимедиа.

Свойства

Методы


MediaFile.getFormatData

Извлекает формат сведений о файле записи СМИ.

mediaFile.getFormatData(
    MediaFileDataSuccessCB successCallback,
    [MediaFileDataErrorCB errorCallback]
);

Описание

Эта функция асинхронно пытается извлечь сведения о формате для файла мультимедиа. Если успешно, он вызывает MediaFileDataSuccessCB обратного вызова с MediaFileData объект. Если попытка завершается неудачей, то функция вызывает MediaFileDataErrorCB обратного вызова.

Поддерживаемые платформы

Ежевика WebWorks совместимости

Не предоставляет API для получения информации о медиа-файлов, так что все MediaFileData объекты возвращают со значениями по умолчанию.

Андроид причуды

API для доступа к медиа файла формата информации ограничено, поэтому не все MediaFileData свойства поддерживаются.

iOS причуды

API для доступа к медиа файла формата информации ограничено, поэтому не все MediaFileData свойства поддерживаются.


MediaFileData

Инкапсулирует сведения о файле мультимедиа формате.

Свойства

Ежевика WebWorks совместимости

Нет API предоставляет сведения о формате для мультимедийных файлов, так что MediaFileData объект, возвращенный MediaFile.getFormatData имеет следующие значения по умолчанию:

Андроид причуды

Поддерживает следующие MediaFileData Свойства:

iOS причуды

Поддерживает следующие MediaFileData Свойства: