動画を撮影する

注: このページでは、サポートが終了した Camera クラスについて言及していますが、CameraX(特定のユースケースでは Camera2)の使用をおすすめします。CameraX と Camera2 は、どちらも Android 5.0(API レベル 21)以降に対応しています。

このレッスンでは、既存のカメラアプリを使用して動画を撮影する方法について説明します。

アプリには実行すべきジョブがあり、動画の統合はそのごく一部にすぎません。動画の撮影は最小限の操作で行えるようにし、カムコーダーを作り変えずに済むようにします。幸い、ほとんどの Android デバイスには、動画を撮影するためのカメラアプリがあらかじめインストールされています。このレッスンでは動画の撮影を行います。

以下の関連リソースもご覧ください。

カメラ機能をリクエストする

アプリにカメラが必要なことを示すには、マニフェスト ファイルに <uses-feature> タグを追加します。

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

アプリでカメラを使用するものの、アプリが動作するうえでカメラが必要ない場合は、android:requiredfalse に設定します。そうすることで、カメラを搭載していないデバイスでも Google Play でアプリをダウンロードできるようになります。次に、hasSystemFeature(PackageManager.FEATURE_CAMERA) を呼び出して、実行時にカメラを使用できるかどうかを確認する必要があります。カメラを使用できない場合は、カメラ機能を無効にする必要があります。

動画を見る

Android カメラアプリは、ストレージ内の動画の場所を指す Uri として onActivityResult() に提供された Intent で動画を返します。次のコードでは、その動画を取得して VideoView に表示しています。

Kotlin

override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        val videoUri: Uri = intent.data
        videoView.setVideoURI(videoUri)
    }
}

Java

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
        Uri videoUri = intent.getData();
        videoView.setVideoURI(videoUri);
    }
}