では、AndroidデバイスにCamera2 API機能が実装されているかどうかを確認するにはどうすればよいですか?機能が実装されているかどうか、プログラムで?
実際、APIバージョン21以降のチェックは機能します。 CameraManager
を含むcamera2 APIはシステムの一部であり、存在するハードウェアに依存しません。したがって、いつでもCameraManager
にCameraDevice
sのリストを要求することができ、その後、個別にクエリを実行できます。
しかし、実際にあなたが意味するのは、「camera2 APIを使用して写真パラメータを手動で設定できるかどうかをどのように判断できるか」です。これは is です。必要なコントロールによって異なりますが、必要な情報は、REQUEST_AVAILABLE_CAPABILITIES
メタデータフィールド を取得することで収集できます。ヒント:MANUAL_SENSOR
を探します。
実際、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));
}
別のプロジェクトでもこれが必要だったので、すべてのcamera2機能をプローブし、どの機能が電話で利用できるかを示す小さなアプリを作成しました: https://play.google.com/store/apps/details?id = de.weis.camera2probe
このレポートはアプリ内でメールで送信できます。受け取ったすべてのレポートをここにリストします: https://github.com/TobiasWeis/Android-camera2probe/wiki (アプリのコードは、誰かが自分の自分のプロジェクト)
デバイスのどのカメラが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
}
}
}
}
}
アプリをインストールします:手動カメラ互換性。マニュアルフォーカス、WB、ISO、シャッタースピード、RAWサポートをチェックします。すべては、camera2 HALドライバーを介して公開されます。購入前に電話を確認するために、AT&Tストアに上記をインストールしました。昨日のモデルを購入しているかどうかを知るのに最適な方法です。
https://play.google.com/store/apps/details?id=pl.vipek.camera2_compatibility_test&hl=en
App A Better Cameraをインストールします。フル、レガシー、限定、またはmotサポーターであるかどうかを確認することができます。これが、Samsung galaxy Tab 3 SMT820 iscamera2 api fullの検出方法です。