web-dev-qa-db-ja.com

Android:デバイスにCamera2 API機能が実装されているかどうかを確認するにはどうすればよいですか?

では、AndroidデバイスにCamera2 API機能が実装されているかどうかを確認するにはどうすればよいですか?機能が実装されているかどうか、プログラムで?

13
Vivek

実際、APIバージョン21以降のチェックは機能します。 CameraManagerを含むcamera2 APIはシステムの一部であり、存在するハードウェアに依存しません。したがって、いつでもCameraManagerCameraDevicesのリストを要求することができ、その後、個別にクエリを実行できます。

しかし、実際にあなたが意味するのは、「camera2 APIを使用して写真パラメータを手動で設定できるかどうかをどのように判断できるか」です。これは is です。必要なコントロールによって異なりますが、必要な情報は、REQUEST_AVAILABLE_CAPABILITIESメタデータフィールド を取得することで収集できます。ヒント:MANUAL_SENSORを探します。

6
rcsumner

実際、camera2 apiはAPIレベル21からのみサポートされています。しかし、このチェックだけでは十分ではありません。 APIレベル21のデバイスがありますが、カメラ2を部分的にしかサポートしていません。これを確認するには、CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVELの値を確認する必要があります。 FULL、LEGACY、またはLIMITEDになります。詳細はこちらをご覧ください: https://developer.Android.com/reference/Android/hardware/camera2/CameraCharacteristics.html

取得方法は次のとおりです。

CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);

for (String cameraId : manager.getCameraIdList()) {
                    CameraCharacteristics characteristics
                            = manager.getCameraCharacteristics(cameraId);


    Log.d("Img", "INFO_SUPPORTED_HARDWARE_LEVEL " + characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
 }
24
user2924714

別のプロジェクトでもこれが必要だったので、すべてのcamera2機能をプローブし、どの機能が電話で利用できるかを示す小さなアプリを作成しました: https://play.google.com/store/apps/details?id = de.weis.camera2probe

このレポートはアプリ内でメールで送信できます。受け取ったすべてのレポートをここにリストします: https://github.com/TobiasWeis/Android-camera2probe/wiki (アプリのコードは、誰かが自分の自分のプロジェクト)

5
TobiasWeis

デバイスのどのカメラがCamera2 APIをサポートしているかを判断する方法の完全なスニペットが必要な場合(少なくとも限定的なサポート):

@TargetApi(Build.VERSION_CODES.Lollipop)
    public boolean allowCamera2Support(int cameraId) {
        CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
        try {
            String cameraIdS = manager.getCameraIdList()[cameraId];
            CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraIdS);
            int support = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL);

                if( support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY )
                    Log.d(TAG, "Camera " + cameraId + " has LEGACY Camera2 support");
                else if( support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED )
                    Log.d(TAG, "Camera " + cameraId + " has LIMITED Camera2 support");
                else if( support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL )
                    Log.d(TAG, "Camera " + cameraId + " has FULL Camera2 support");
                else
                    Log.d(TAG, "Camera " + cameraId + " has unknown Camera2 support?!");

            return support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED || support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL;
        }
        catch (CameraAccessException e) {
            e.printStackTrace();
        }
        return false;
    }

    @TargetApi(Build.VERSION_CODES.Lollipop)
    private void checkCamera2Support() {
        if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop ) {
            int numberOfCameras = 0;
            CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);

            try {
                numberOfCameras =  manager.getCameraIdList().length;
            } catch (CameraAccessException e) {
                e.printStackTrace();
            } catch(AssertionError e) {
                e.printStackTrace();
            }

            if( numberOfCameras == 0 ) {
                    Log.d(TAG, "0 cameras");
            }else {
                for (int i = 0; i < numberOfCameras; i++) {
                    if (!allowCamera2Support(i)) {
                        Log.d(TAG, "camera " + i + " doesn't have limited or full support for Camera2 API");
                    }else{
                        // here you can get ids of cameras that have limited or full support for Camera2 API
                    }
                }
            }
        }
    }
2
DeveScie

アプリをインストールします:手動カメラ互換性。マニュアルフォーカス、WB、ISO、シャッタースピード、RAWサポートをチェックします。すべては、camera2 HALドライバーを介して公開されます。購入前に電話を確認するために、AT&Tストアに上記をインストールしました。昨日のモデルを購入しているかどうかを知るのに最適な方法です。

https://play.google.com/store/apps/details?id=pl.vipek.camera2_compatibility_test&hl=en

0
SaintMulligan

App A Better Cameraをインストールします。フル、レガシー、限定、またはmotサポーターであるかどうかを確認することができます。これが、Samsung galaxy Tab 3 SMT820 iscamera2 api fullの検出方法です。

0
Pgo