Monaca Docs
  • Monaca とは
  • 最初のアプリを作る
  • アプリをテストする
  • Monaca リリース情報
    • iOS プライバシーマニフェスト対応
    • 「ニフクラ mobile backend」終了に関するお知らせ
    • プラグイン uses-permission タグの重複修正機能
    • Cordova 12 の変更点
    • iOSストア版Monaca デバッガー配信停止と代替機能のご案内
    • iOS App Store への送信エラー (ITMS-90165)
    • cordova-custom-configのビルドエラー
    • Cordova 11 の変更点
    • Cordova 10 の変更点
    • Cordova 9.0 の変更点
    • 利用規約の変更
    • 新しい Monaca CLI と Localkit
    • CordovaからCapacitorへの移行
  • Monacaガイド
    • Monaca での開発の概要
    • Monaca クラウド IDE
      • 概要
      • Monaca クラウド IDE の機能
      • ターミナル機能
      • エディターのショートカット一覧
      • プロジェクトの構成
        • ファイル・フォルダー構成
        • JS/CSS コンポーネント
        • Cordova プラグイン
        • ユーザー Cordova プラグイン
      • バージョン管理
        • 概要
        • GitHub との連携
        • Git SSH との連携
      • Monaca CI
        • 概要
        • アプリ配信 / 配布サービス (デプロイサービス)
        • Appetize.ioへの配信
        • DeployGateへの配信
        • Firebase への配信
      • ビルド
        • iOS アプリのビルド
          • iOS アプリのビルド
          • Monaca と Xcode 間でのビルド設定の再利用
        • Android アプリのビルド
        • Windows アプリのビルド
        • Electron アプリのビルド
          • Windows アプリのビルド
        • PWA アプリのビルド
        • ビルド環境の設定
        • ビルド履歴一覧
        • 一般的なビルドとアップロードエラー
      • 配布方法
        • App Store での配布
          • App Store Connect ガイド
          • iOS アプリ アップロード機能
        • Google Play での配布
        • 公式ストア経由以外での配布
      • パッケージダウンロード機能
      • チュートリアル
    • Monaca Localkit
      • 概要
      • ペアリングとデバッグ
      • リモートビルドと配布申請
      • トラブルシューティング
        • インストール ( Windows の場合 )
        • インストール ( Mac OS X の場合 )
        • アンインストール時 ( Windows の場合 )
        • 不完全なファイル・フォルダー構成
        • プレビューウィンドウが更新されない
        • Error while installing
        • nodeのインストールが必要です
      • チュートリアル
    • Monaca CLI
      • 概要
      • Monaca CLI コマンド
      • ペアリングとデバッグ
      • リモートビルドと配布申請
      • トラブルシューティング ガイド
      • チュートリアル
    • Monaca デバッガー
      • 機能の概要
      • インストール方法
        • Android 向けの Monaca デバッガー
        • iOS 向け Monaca デバッガー
        • Android エミュレーター向け Monaca デバッガー
      • 使用例
      • iOS カスタムビルド版デバッガー
      • iOS シミュレータービルド
      • トラブルシューティング ガイド
      • チュートリアル
    • チームダッシュボード
    • クイックビューア
    • 他のプラットフォームからの移行
      • 移行時の確認ポイント
      • クラウドIDE プレビュー機能の設定
      • Angular からの移行
      • Ionic からの移行
      • React からの移行
      • Vue からの移行
      • Telerik からの移行
  • 🛠️アプリビルド
    • iOS ビルド
      • 秘密鍵とCSRの作成
      • 証明書の作成
      • プロビジョニング・プロファイルの更新
  • チュートリアル
    • Monaca クラウド IDE チュートリアル
      • パート 1 : プロジェクトの作成
      • パート 2 : Monaca クラウド IDE と Monaca デバッガーとの連携
      • パート 3 : Monaca アプリのビルド
      • パート 4 : Monaca アプリの配布申請
    • Monaca Localkit チュートリアル
      • パート 1 : プロジェクトの作成
      • パート 2 : Monaca Localkit と Monaca デバッガーとの連携
      • パート 3 : Monaca アプリのビルド
      • パート 4 : Monaca アプリの配布申請
    • Monaca CLI チュートリアル
      • パート 1 : プロジェクトの作成
      • パート 2 : Monaca CLI と Monaca デバッガーとの連携
      • パート 3 : Monaca アプリのビルド
      • パート 4 : Monaca アプリの配布申請
    • Electron アプリ開発
      • NPMパッケージの利用方法
      • Web APIの利用方法
    • バーコードスキャナープラグイン
    • Cordova Sqlite Storage プラグイン
    • Cordova Google Analytics プラグイン
    • Cordova Firebase プラグイン
    • Cordova In-app Purchase プラグイン
    • Cordova AppVersion プラグイン
    • Cordova Ionic Keyboard プラグイン
    • Cordova Social Sharing プラグイン
    • Phonegap Push プラグイン
  • APIの解説
    • Monaca API
      • Monaca クラウド & リモートビルド API
      • ユーティリティ
    • 基本プラグイン
      • Cordova 12.0
        • Battery プラグイン
        • Camera プラグイン
        • Device プラグイン
        • Device Motion プラグイン
        • Device Orientation プラグイン
        • Dialog プラグイン
        • File プラグイン
        • Geolocation プラグイン
        • InAppBrowser プラグイン
        • Media プラグイン
        • Media Capture プラグイン
        • Network Information プラグイン
        • Vibration プラグイン
        • StatusBar プラグイン
      • Cordova 11.0
        • Battery プラグイン
        • Camera プラグイン
        • Device プラグイン
        • Device Motion プラグイン
        • Device Orientation プラグイン
        • Dialog プラグイン
        • File プラグイン
        • Geolocation プラグイン
        • InAppBrowser プラグイン
        • Media プラグイン
        • Media Capture プラグイン
        • Network Information プラグイン
        • Splashscreen プラグイン
        • Vibration プラグイン
        • StatusBar プラグイン
      • Cordova 10.0
        • Battery プラグイン
        • Camera プラグイン
        • Device プラグイン
        • Device Motion プラグイン
        • Device Orientation プラグイン
        • Dialog プラグイン
        • File プラグイン
        • Geolocation プラグイン
        • InAppBrowser プラグイン
        • Media プラグイン
        • Media Capture プラグイン
        • Network Information プラグイン
        • Splashscreen プラグイン
        • Vibration プラグイン
        • StatusBar プラグイン
        • Whitelist プラグイン ( Android 専用 )
      • Cordova 9.0
        • バッテリー情報の取得 プラグイン
        • カメラ操作 プラグイン
        • 住所録の取得 プラグイン
        • 端末情報の取得 プラグイン
        • 端末のモーション検知 プラグイン
        • 端末のオリエンテーション検知 プラグイン
        • ダイアログの制御 プラグイン
        • ファイル操作 プラグイン
        • ファイル転送 プラグイン
        • 位置情報の取得 プラグイン
        • 表記の国際化対応 プラグイン
        • InAppBrowser プラグイン
        • メディア操作 プラグイン
        • メディアキャプチャー プラグイン
        • ネットワーク情報の取得 プラグイン
        • スプラッシュスクリーンの制御 プラグイン
        • バイブレーションの制御 プラグイン
        • ステータスバーの制御 プラグイン
        • ホワイトリストへの登録 プラグイン ( Android 専用 )
    • サードパーティー製プラグイン
      • AdvancedHTTPプラグイン
      • PhoneGap BarcodeScanner
      • Custom Config
      • Datepicker
      • Share ( Android 向け )
      • WebIntent ( Android 向け )
    • Monaca 提供プラグイン
      • アプリロジック暗号化 (Encrypt プラグイン)
      • In-App アップデーター (In-App Updater)
      • セキュア ストレージ
      • NFC リーダー
      • バーコードスキャナー
      • Androidビルドメモリサイズ設定
    • 外部サービス連携
      • Repro
      • AppsFlyer
    • 設定ファイル
      • Android
        • Android の設定
        • config.xml
        • AndroidManifest.xml
      • iOS
        • iOS の設定
        • config.xml
        • MonacaApp-info.plist
  • サンプル & Tips
    • Firestoreを利用する
    • サンプルアプリ
      • Twitter アプリ
      • Facebook アプリ
      • 広告 アプリ (AdMob)
      • Hello World アプリ
      • メモ帳アプリ
      • ブロック崩しゲーム
      • Flickrアプリ
      • TODO管理 アプリ
      • 電車図鑑アプリ
      • 時計アプリ
      • 誕生年の計算アプリ
      • おみくじ占いアプリ
      • RSS リーダーアプリ
    • 開発 Tips
      • 音楽の再生方法
      • スプラッシュ画像の制御方法
      • データベースの利用方法
  • Webpack5への更新
  • 機能
    • SNS 認証
    • プッシュ通知
    • データベース
  • 外部サービス連携ガイド
    • Firebase
      • アプリの登録と設定ファイルの取得
  • 移行ガイド
    • ニフクラ mobile backend
      • プッシュ通知
        • Firebaseサービスの設定
        • ソースコードの移行
      • データストア
        • ソースコードの移行
        • データの移行
        • データ移行スクリプト実行手順
      • 会員管理・認証
        • 会員管理 データの移行
        • Firebase Authentication パスワード再設定サンプル
        • Firebase Authenticationを使用したユーザー名認証の方法
      • スクリプト
        • Firebase Functions開発環境の作成
        • サンプル共通項目
        • サンプル1(GETサンプル)
        • サンプル2(POSTサンプル)
        • サンプル3(DELETEサンプル)
        • エミュレータでのテスト
      • ファイルストア
        • ファイルアップロード
        • ファイル検索
        • ファイル一覧表示
        • ファイル削除
  • FAQ
    • 概要
    • IDE
    • ビルド
    • リリース
    • 契約プラン
    • アプリケーション
    • 使用方法
    • Freeプラン
    • デバッガー
  • 対応環境
  • トラブルシューティング
    • プレビューログがリロードを繰り返す (Vue packages version mismatch error)
  • Monaca製品サイト
  • 運営会社
  • English
GitBook提供
このページ内
  • プラグイン ID
  • プラグインの追加方法
  • 対象プラットフォーム
  • API の解説
  • オブジェクト
  • CaptureAudioOptions
  • CaptureImageOptions
  • CaptureVideoOptions
  • CaptureCallback
  • CaptureError
  • CaptureErrorCB
  • ConfigurationData
  • MediaFile
  • MediaFileData
  • メソッド
  • capture.captureAudio
  • capture.captureImage
  • capture.captureVideo
  • MediaFile.getFormatData
  • プロパティ
  • Android の 「 ライフサイクル 」 に起因する注意点

役に立ちましたか?

  1. APIの解説
  2. 基本プラグイン
  3. Cordova 11.0

Media Capture プラグイン

前へMedia プラグイン次へNetwork Information プラグイン

最終更新 2 年前

役に立ちましたか?

テスト環境 ( バージョン番号 ) :

このプラグインの詳細は、 をご確認ください。

このプラグインを使用して、端末側の録音・録画 ( オーディオ・画像・動画 ) 機能にアクセスします。

このプラグインは、グローバルな navigator.device.capture オブジェクトを定義します。 グローバルスコープでは、deviceready イベントの発火後まで使用できません。

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    console.log(navigator.device.capture);
}

プラグイン ID

cordova-plugin-media-capture

プラグインの追加方法

このプラグインを使用する場合には、Monaca クラウド IDE の [ Cordova プラグインの管理 ] 上で、Capture プラグインをにします。

対象プラットフォーム

  • Android

  • iOS

API の解説

オブジェクト

  • Capture

  • CaptureAudioOptions

  • CaptureImageOptions

  • CaptureVideoOptions

  • CaptureCallback

  • CaptureErrorCB

  • ConfigurationData

  • MediaFile

  • MediaFileData

CaptureAudioOptions

オーディオキャプチャー時の各種設定を行えます。

プロパティ

  • limit: 同一のキャプチャー処理の中で、端末が録音できるオーディオクリップの最大数。値は、1以上に設定します ( デフォルトでは 1 )。

  • duration: 1 つあたりのオーディオ サウンド クリップの最大長 (秒単位 )

例

// 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);

Android 特有の動作

  • durationパラメーターは使用できません。よって、録音時間はプログラムで制御できません。

iOS 特有の動作

  • limit パラメーターは使用できません。1回のキャプチャー処理につき、1 回の録音のみ行います。

CaptureImageOptions

画像キャプチャー時の各種設定を行うときに使用します。

プロパティ

  • limit: 同一のキャプチャー処理の中で、端末がキャプチャーできる画像の最大数。値は、1 以上に設定します ( デフォルトでは 1 )。

例

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

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

iOS 特有の動作

  • limit パラメーターは使用できません。1 回の実行につき、1つの画像のみキャプチャーします。

CaptureVideoOptions

ビデオキャプチャー時の各種設定を行う時に使用します。

プロパティ

  • limit: 同一のキャプチャー処理の中で、端末が録画できるビデオクリップの最大数。値は、1以上に設定します ( デフォルトでは 1 )。

  • duration: 1 つあたりのビデオクリップの最大長 ( 秒単位 )

例

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

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

iOS 特有の動作

  • limit プロパティは無視されます。1 回の実行につき、1回のビデオ録画のみ行います。

Android 特有の動作

例 ( Android w/ quality )

// limit capture operation to 1 video clip of low quality
var options = { limit: 1, quality: 0 };
navigator.device.capture.captureVideo(captureSuccess, captureError, options);

CaptureCallback

メディアキャプチャー処理の成功時に呼び出されます。

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

解説

キャプチャー処理の成功時に、この関数が実行されます。この時には、メディアファイルのキャプチャーが最低 1 回は終了しており、加えて、メディアキャプチャー用アプリをユーザーが終了させたか、または、キャプチャー数が最大数に達してい

各 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
    }
};

CaptureError

キャプチャー処理の失敗時のエラーコードを格納しています。

プロパティ

  • code: 次の定義済みエラーコードのいずれか

定数

  • CaptureError.CAPTURE_INTERNAL_ERR: 画像または音 ( 声 ) のキャプチャーに失敗した場合 ( カメラまたはマイクロフォンを使用 )

  • CaptureError.CAPTURE_APPLICATION_BUSY: カメラまたはオーディオキャプチャー用のアプリが、別のキャプチャーリクエストの処理を現在行っている場合

  • CaptureError.CAPTURE_INVALID_ARGUMENT: API の使用方法が無効な場合 ( 例 : limit の値が 1 未満 )

  • CaptureError.CAPTURE_NO_MEDIA_FILES: キャプチャー前に、カメラまたはオーディオキャプチャー用のアプリをユーザーが閉じた場合

  • CaptureError.CAPTURE_PERMISSION_DENIED: ユーザーは、指定されたキャプチャ要求の実行に必要な権限を拒否しました。

  • CaptureError.CAPTURE_NOT_SUPPORTED: リクエストしたキャプチャー処理のタイプをサポートしていない場合

CaptureErrorCB

メディアのキャプチャー処理中に、エラーが発生した場合に呼び出されます。

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

解説

メディアのキャプチャー処理を開始して、エラーが発生した場合、この関数が実行されます。想定できるエラー発生のシナリオとして、キャプチャー用のアプリがビジー ( busy ) 状態の場合、キャプチャー処理がすでに実行されている場合、メディアファイルのキャプチャー前にユーザーが処理をキャンセルした場合などが考えられます。

適切なエラーコード ( code ) が格納された CaptureError オブジェクトを使用して、この関数が実行されます。

例

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

ConfigurationData

メディアキャプチャー用の各種パラメーターを設定するときに使用します。

解説

メディアキャプチャーの各種情報 ( MIME タイプ、ビデオ・画像キャプチャーの各種情報など ) を設定できます。サポートされているプロパティは、端末毎に異なります。

  • video/3gpp

  • video/quicktime

  • image/jpeg

  • audio/amr

  • audio/wav

プロパティ

  • type: メディアタイプを示す、ASCII でエンコードされた小文字の文字列 (DOMString)

  • height: ピクセル単位で示す、画像またはビデオの縦の長さ。サウンドクリップに関しては、「0 」 に設定します。 (Number)

  • width: ピクセル単位で示す、画像またはビデオの横幅。サウンドクリップに関しては、「0 」 に設定します。 (Number)

例

// 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

キャプチャーしたメディアファイルの各種プロパティを設定するときに使用します。

プロパティ

  • name: ファイル名 ( パス情報なし、DOMString )

  • fullPath: ファイルへのフルパス ( ファイル名を含む、DOMString )

  • type: ファイルの mime タイプ (DOMString)

  • lastModifiedDate: ファイルの最終更新日時 (Date)

  • size: ファイルサイズ ( バイト単位、Number )

メソッド

  • MediaFile.getFormatData: メディアファイルのフォーマット情報を取得できます。

MediaFileData

メディアファイルに関するフォーマット情報を設定するときに使用します。

プロパティ

  • codecs: オーディオとビデオのコンテンツの形式 (DOMString)

  • bitrate: コンテンツの平均ビットレート。画像に関しては、値は 「 0」 となります。 (Number)

  • height: ピクセル単位で示す、画像またはビデオの縦の長さ。オーディオクリップに関しては、「 0 」 に設定します。 (Number)

  • width: ピクセル単位で示す、画像またはビデオの横幅。オーディオクリップに関しては、「 0 」 に設定します。 (Number)

  • duration: 秒単位で示す、ビデオまたはサウンドクリップの長さ。画像に関しては、「 0 」 に設定します。 (Number)

Android 特有の動作

MediaFileData プロパティのサポート状況は、次のとおりです。

  • codecs: 使用できません。null を返します。

  • bitrate: 使用できません。「 0 」 を返します。

  • height: 使用できます。画像・ビデオファイルのみが対象です。

  • width: 使用できます。画像・ビデオファイルのみが対象です。

  • duration: 使用できます。オーディオ・ビデオファイルのみが対象です。

iOS 特有の動作

MediaFileData プロパティのサポート状況は、次のとおりです。

  • codecs: 使用できません。null を返します。

  • bitrate: iOS 4 上でのみ使用できます (対象はオーディオのみ、画像・ビデオに関しては、「 0 」 を返します。 )

  • height: 使用できます。画像・ビデオファイルのみが対象です。

  • width: 使用できます。画像・ビデオファイルのみが対象です。

  • duration: 使用できます。オーディオ・ビデオファイルのみが対象です。

メソッド

  • capture.captureAudio

  • capture.captureImage

  • capture.captureVideo

  • MediaFile.getFormatData

capture.captureAudio

オーディオ録音用アプリの起動、および、キャプチャーしたオーディオクリップ ファイルの情報を返します。

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

解説

端末に標準搭載されたオーディオ録音用のアプリを使用して、オーディオのキャプチャー ( 非同期処理 ) を行います。この処理では、同一セッション内で、複数の録音を行うことができます。

オーディオ録音アプリを終了したとき、または、CaptureAudioOptions.limit で指定した最大録音数に達したとき、キャプチャー処理は終了します。limit パラメーターを指定しない場合、「 1 」 がデフォルトとなります。この場合、1 つのオーディオクリップを録音したあとに、キャプチャー処理が終了します。

キャプチャー処理が終了するときには、MediaFile オブジェクト ( 群 ) の配列を使用して、 CaptureCB コールバックが実行されます。各 MediaFile オブジェクトには、キャプチャーしたオーディオ クリップ ファイルに関する情報が格納されています。オーディオクリップのキャプチャー前に、ユーザーが処理を終了させた場合、 CaptureError オブジェクトを使用して、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});

iOS 特有の動作

  • iOS には、標準のオーディオ録音アプリがありません。簡易なユーザーインターフェースのみ提供されています。

capture.captureImage

カメラアプリの起動、および、キャプチャーした画像ファイルの情報を返します。

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

解説

端末に標準搭載されているカメラアプリを使用して、画像のキャプチャーを行います ( 非同期処理 )。この処理では、同一セッション内で、複数のキャプチャーを行うことができます。

カメラアプリを終了したとき、または、CaptureImageOptions.limit で指定した最大撮影数に達したとき、キャプチャー処理は終了します。limit パラメーターを指定しない場合、「 1 」 がデフォルトとなります。この場合、1 つの画像を撮影したあとに、キャプチャー処理が終了します。

キャプチャー処理が終了するときには、MediaFile オブジェクト ( 群 ) の配列を使用して、 CaptureCB コールバックが実行されます。各 MediaFile オブジェクトには、キャプチャーした画像ファイルに関する情報が格納されています。画像のキャプチャー前に、ユーザーが処理を終了させた場合、 CaptureError オブジェクトを使用して、CaptureErrorCB コールバックが実行されます。CaptureError オブジェクトには、CaptureError.CAPTURE_NO_MEDIA_FILES エラーコードが格納されています。

対象プラットフォーム

  • Android

  • iOS

iOS 特有の動作

iOS 10以降、プライバシーに関連するデータにアクセスする場合は、 info.plist に使用の説明を設定することが必須になります。アクセスを許可するようにシステムに指示すると、この使用の説明はアクセス許可ダイアログボックスの一部として表示されますが、使用の説明を入力しない場合は、ダイアログが表示される前にアプリが強制終了します。また、Apple は個人データにアクセスするアプリをリジェクトしますが、使用の説明は提供していません。

このプラグインでは、次の使用の説明が必要になります。

  • NSCameraUsageDescriptionには、アプリがユーザーのカメラにアクセスする理由を記述します。

  • NSMicrophoneUsageDescriptionは、アプリがユーザーのマイクにアクセスする理由を記述します。

  • NSPhotoLibraryUsageDescriptionentryは、アプリケーションがユーザの写真ライブラリにアクセスする理由を記述します。

これらの設定を info.plist に追加するには、config.xml ファイルの <edit-config> タグに以下のように設定します。

<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge">
    <string>need camera access to take pictures</string>
</edit-config>

<edit-config target="NSMicrophoneUsageDescription" file="*-Info.plist" mode="merge">
    <string>need microphone access to record sounds</string>
</edit-config>

<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge">
    <string>need to photo library access to get pictures from there</string>
</edit-config>

例

// 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});

capture.captureVideo

ビデオ録画アプリの起動、および、キャプチャーしたビデオクリップファイルの情報を返します。

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

解説

端末に標準搭載されているビデオ録画アプリを使用して、ビデオのキャプチャーを行います ( 非同期処理 )。この処理では、同一セッション内で、複数のキャプチャーを行うことができます。

ビデオ録画アプリを終了したとき、または、CaptureVideoOptions.limit で指定した最大録画数に達したとき、キャプチャー処理は終了します。limit パラメーターを指定しない場合、「 1 」 がデフォルトとなります。この場合、1 つのビデオクリップを録画したあとに、キャプチャー処理が終了します。

キャプチャー処理が終了するときには、MediaFile オブジェクト ( 群 ) の配列を使用して、 CaptureCB コールバックが実行されます。各 MediaFile オブジェクトには、キャプチャーしたビデオクリップファイルに関する情報が格納されています。ビデオクリップのキャプチャー前に、ユーザーが処理を終了させた場合、 CaptureError オブジェクトを使用して、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});

MediaFile.getFormatData

キャプチャーしたメディア ファイルのフォーマット情報を取得できます。

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

解説

メディアファイルのフォーマット情報を取得できます ( 非同期処理 )。成功時には、MediaFileData オブジェクトを使用して、MediaFileDataSuccessCB コールバックが呼び出されます。失敗時には、 MediaFileDataErrorCB コールバックが呼び出されます。

Android 特有の動作

メディアファイルのフォーマット情報にアクセスできる API には、さまざまな制約が設けられています ( 一部の MediaFileData プロパティのみサポートされています )。

iOS 特有の動作

メディアファイルのフォーマット情報にアクセスできる API には、さまざまな制約が設けられています ( 一部の MediaFileData プロパティのみサポートされています )。

プロパティ

  • supportedAudioModes: 端末がサポートしている、オーディオの録音形式 (ConfigurationData[])

  • supportedImageModes: 端末がサポートしている、画像のサイズと形式 (ConfigurationData[])

  • supportedVideoModes: 端末がサポートしている、ビデオ録画の解像度と形式 (ConfigurationData[])

Android の 「 ライフサイクル 」 に起因する注意点

なお、アプリ内では、次のように、どちらのイベントにも対応できるように記述 ( サブスクライブ/subscribe ) しておくことを推奨します。

function onDeviceReady() {
    // pendingcaptureresult is fired if the capture call is successful
    document.addEventListener('pendingcaptureresult', function(mediaFiles) {
        // Do something with result
    });

    // pendingcaptureerror is fired if the capture call is unsuccessful
    document.addEventListener('pendingcaptureerror', function(error) {
        // Handle error case
    });
}

// Only subscribe to events after deviceready fires
document.addEventListener('deviceready', onDeviceReady);

Android では、quality プロパティも使用できます。このプロパティを使用して、画質 (quality ) を変えて、ビデオをキャプチャーできます。このプロパティに 1 ( デフォルト ) を設定した場合、高画質 ( HQ ) になり、0を設定した場合、低画質 ( LQ ) になります。低画質のビデオは、MMS メッセージなどで使用するときに有用です。詳細は、をご確認ください。

MIME タイプに関しては、 に準拠する必要があります。次に例を示します。

Android プラットフォーム上で、オーディオ・ビデオ・画像をキャプチャーする場合、ネイティブ側のキャプチャー用アプリが起動され、Cordova Webview がバックグラウンド処理に切り替わったタイミングで、アプリ自体 ( Cordova が動作中 ) が強制終了 ( kill ) させられる場合があります。この問題の詳細は、 をご確認ください。強制終了させられた場合、キャプチャー処理のメソッドに指定されていた成功時または失敗時のコールバックは実行されません。未処理/保留されている実行結果は、Cordova の イベント後に実行される document イベントで使用できます ( resume イベントに関する詳細は、左記の 「 ライフサイクルに関する注意点 」 を参照のこと )。

コード内における、キャプチャー結果を処理する場所は、開発者側で自由に設定できますが ( 上記の 「 ライフサイクル 」 を参照のこと )、アプリ側の処理の ( 保留する/されている処理 ) の保存と復旧は、それぞれ、 イベントと イベントで適宜行うことが必要です。なお、これらのイベントは、Android プラットフォーム上でのみ使用でき、加えて、キャプチャー実行時、WebView が強制終了された場合のみ使用できます。

こちら
RFC2046
Android Lifecycle Guide
resume event
pause
resume
4.0.0
こちらの原文 ( GitHub )
有効