// Type definitions for Apache Cordova MediaCapture plugin // Project: https://github.com/apache/cordova-plugin-media-capture // Definitions by: Microsoft Open Technologies Inc // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // // Copyright (c) Microsoft Open Technologies Inc // Licensed under the MIT license interface Navigator { device: Device; } interface Device { capture: Capture; } /** This plugin provides access to the device's audio, image, and video capture capabilities. */ interface Capture { /** * Start the audio recorder application and return information about captured audio clip files. * @param onSuccess Executes when the capture operation finishes with an array * of MediaFile objects describing each captured audio clip file. * @param onError Executes, if the user terminates the operation before an audio clip is captured, * with a CaptureError object, featuring the CaptureError.CAPTURE_NO_MEDIA_FILES error code. * @param options Encapsulates audio capture configuration options. */ captureAudio( onSuccess: (mediaFiles: MediaFile[]) => void, onError: (error: CaptureError) => void, options?: AudioOptions): void ; /** * Start the camera application and return information about captured image files. * @param onSuccess Executes when the capture operation finishes with an array * of MediaFile objects describing each captured image clip file. * @param onError Executes, if the user terminates the operation before an audio clip is captured, * with a CaptureError object, featuring the CaptureError.CAPTURE_NO_MEDIA_FILES error code. * @param options Encapsulates audio capture configuration options. */ captureImage( onSuccess: (mediaFiles: MediaFile[]) => void, onError: (error: CaptureError) => void, options?: ImageOptions): void ; /** * Start the video recorder application and return information about captured video clip files. * @param onSuccess Executes when the capture operation finishes with an array * of MediaFile objects describing each captured video clip file. * @param onError Executes, if the user terminates the operation before an audio clip is captured, * with a CaptureError object, featuring the CaptureError.CAPTURE_NO_MEDIA_FILES error code. * @param options Encapsulates audio capture configuration options. */ captureVideo( onSuccess: (mediaFiles: MediaFile[]) => void, onError: (error: CaptureError) => void, options?: VideoOptions): void ; /** The audio recording formats supported by the device. */ supportedAudioModes: ConfigurationData[]; /** The recording image sizes and formats supported by the device. */ supportedImageModes: ConfigurationData[]; /** The recording video resolutions and formats supported by the device. */ supportedVideoModes: ConfigurationData[]; } /** Encapsulates properties of a media capture file. */ interface MediaFile { /** The name of the file, without path information. */ name: string; /** The full path of the file, including the name. */ fullPath: string; /** The file's mime type */ type: string; /** The date and time when the file was last modified. */ lastModifiedDate: Date; /** The size of the file, in bytes. */ size: number; /** * Retrieves format information about the media capture file. * @param successCallback Invoked with a MediaFileData object when successful. * @param errorCallback Invoked if the attempt fails, this function. */ getFormatData( successCallback: (data: MediaFileData) => void, errorCallback?: () => void): void; } /** Encapsulates format information about a media file. */ interface MediaFileData { /** The actual format of the audio and video content. */ codecs: string; /** The average bitrate of the content. The value is zero for images. */ bitrate: number; /** The height of the image or video in pixels. The value is zero for audio clips. */ height: number; /** The width of the image or video in pixels. The value is zero for audio clips. */ width: number; /** The length of the video or sound clip in seconds. The value is zero for images. */ duration: number; } /** Encapsulates the error code resulting from a failed media capture operation. */ interface CaptureError { /** * One of the pre-defined error codes listed below. * CaptureError.CAPTURE_INTERNAL_ERR * The camera or microphone failed to capture image or sound. * CaptureError.CAPTURE_APPLICATION_BUSY * The camera or audio capture application is currently serving another capture request. * CaptureError.CAPTURE_INVALID_ARGUMENT * Invalid use of the API (e.g., the value of limit is less than one). * CaptureError.CAPTURE_NO_MEDIA_FILES * The user exits the camera or audio capture application before capturing anything. * CaptureError.CAPTURE_NOT_SUPPORTED * The requested capture operation is not supported. */ code: number; message: string; } declare var CaptureError: { /** Constructor for CaptureError */ new (code: number, message: string): CaptureError; CAPTURE_INTERNAL_ERR: number; CAPTURE_APPLICATION_BUSY: number; CAPTURE_INVALID_ARGUMENT: number; CAPTURE_NO_MEDIA_FILES: number; CAPTURE_NOT_SUPPORTED: number; } /** Encapsulates audio capture configuration options. */ interface AudioOptions { /** * The maximum number of audio clips the device's user can capture in a single * capture operation. The value must be greater than or equal to 1. */ limit?: number; /** The maximum duration of a audio clip, in seconds. */ duration?: number; } /** Encapsulates image capture configuration options. */ interface ImageOptions { /** * The maximum number of images the user can capture in a single capture operation. * The value must be greater than or equal to 1 (defaults to 1). */ limit?: number; } /** Encapsulates video capture configuration options. */ interface VideoOptions { /** * The maximum number of video clips the device's user can capture in a single * capture operation. The value must be greater than or equal to 1. */ limit?: number; /** The maximum duration of a video clip, in seconds. */ duration?: number; } /** Encapsulates a set of media capture parameters that a device supports. */ interface ConfigurationData { /** The ASCII-encoded lowercase string representing the media type. */ type: string; /** The height of the image or video in pixels. The value is zero for sound clips. */ height: number; /** The width of the image or video in pixels. The value is zero for sound clips. */ width: number; }