写真を撮影する

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

このレッスンでは、デバイス上の別のカメラアプリに処理を委任することによって写真を撮影する方法について説明します(独自のカメラ機能を作成する場合は、カメラを制御するをご覧ください)。

たとえば、クライアント アプリが実行されているデバイスで撮影した空の写真を組み合わせることによってグローバルな天気情報マップを作成する、クラウド ソーシングによる天気情報サービスを実装するとします。写真を統合する処理はアプリのごく一部にすぎません。写真の撮影は最小限の操作で行えるようにし、カメラを作り変えずに済むようにします。幸い、ほとんどの Android デバイスには少なくとも 1 つのカメラアプリがあらかじめインストールされています。このレッスンでは、写真を撮影する方法について説明します。

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

写真の撮影機能がアプリに不可欠な場合、Google Play でのアプリの表示をカメラが搭載されているデバイスに制限します。アプリにカメラが必要なことを示すには、マニフェスト ファイルに <uses-feature> タグを追加します。

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

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