web-dev-qa-db-ja.com

Android.hardware.camera2.fullはどこから来たのですか?

カメラアプリを実装しようとしています。例を確認します。一部の例には、次のマニフェスト機能が含まれています:uses-feature Android:name="Android.hardware.camera2.full。私は公式文書とグーグルの例をチェックしました、そしてそれらのどれも既存のこの機能に言及していません。 (または私はいくつかが欠けています)。

この機能のソースは何ですか?Android.hardware.cameraの違いは何ですか?


編集:私を混乱させたのは、googlesamplesの例でした。

https://github.com/googlesamples/Android-Camera2Basic/blob/master/kotlinApp/Application/src/main/AndroidManifest.xml

この

https://github.com/googlesamples/Android-Camera2Basic/blob/master/Application/src/main/AndroidManifest.xml

この

https://github.com/googlesamples/Android-Camera2Raw/blob/master/Application/src/main/AndroidManifest.xml

彼らは新しいCamera2APIと古いマニフェストfeaturesを使用しています。両方がどのように組み合わされているのかわかりません。

9
guness

いつものように、Android ソースコード 自体を調べるのが最善です:

* A given camera device may provide support at one of two levels: limited or * full. If a device only supports the limited level, then Camera2 exposes a * feature set that is roughly equivalent to the older * {@link Android.hardware.Camera Camera} API, although with a cleaner and more * efficient interface. Devices that implement the full level of support * provide substantially improved capabilities over the older camera * API. Applications that target the limited level devices will run unchanged on * the full-level devices; if your application requires a full-level device for * proper operation, declare the "Android.hardware.camera2.full" feature in your * manifest.</p>

あなたが言及した機能の性質が明らかになることを願っています。

camera2 apisについては、カメラとの対話用のよりクリーンなapiを作成する試みとして、 導入 in Android 5(api level 21)古いcameraapiとは対照的です。

8
aga

機能フラグとカメラAPIの名前は、同じように見えても実際には関連していません。

機能 "Android.hardware.camera"(PackageManager.FEATURE_CAMERA) は、デバイスに背面カメラがあることを意味します。それで全部です;背面カメラのないデバイスへのインストールを避けたいアプリは、そのアプリをリストする必要があります。

Java Android.hardware.Cameraクラスとは関係ありません。

機能 "Android.hardware.camera.level.full"(PackageManager.FEATURE_CAMERA_LEVEL_FULL) は、デバイス上の少なくとも1台のカメラが フルハードウェアレベル をサポートしていることを示しています。 Android.hardware.camera2APIパッケージ。

そのため、背面カメラを備えたデバイスには常に「Android.hardware.camera」と表示されます。良いカメラがあれば、また「Android.hardware.camera.level.full」をリストします。

Camera2のサンプルアプリは、あらゆる品質のカメラで実行することを目的としているため、特定のレベルの機能を備えている必要はなく、カメラデバイスがあれば十分です。

一部の開発者が「Android.hardware.camera2」のような機能を要求しようとしているのを見てきました。 Android SDKにはそのような機能が定義されていないため、この機能を要求しようとすると、アプリをどのデバイスにもインストールできなくなります。camera2APIは、Android 5.0(Lollipop);各カメラデバイスがサポートするハードウェアレベル(LEGACY、LIMITED、FULL、またはLEVEL_3)の問題です。

8
Eddy Talvala

AndroidはAndroid AP​​I21以降にCamera2apiを導入しました。この新しいCameraAPIにより、パラメーターの変更がより使いやすく簡単になります。以前のバージョンでは、機能がさらに制限されていました。

Android Camera2には、メーカーによって異なる4つのレベルの実装があります。

  1. レガシー:Camera2とCameraの間の単なる変換です。互換性のために使用されます。 Camera2のほんの一部が正しく機能します。
  2. 制限付き:Camera2が実装されていますが、使用可能なすべてのメソッドがあるわけではありません。 (すべてのメーカーが同じ方法を実装しているわけではないため、すべてがすべてのデバイスで機能するわけではありません)
  3. フル:Camera2のすべてのメソッドが実装されています。通常、メーカーはこれを主力デバイスに実装しています。
  4. レベル3:さらにYUV再処理とRAW画像キャプチャをサポートします。 (最良の場合)

ソースはこちら そして個人的な経験。

3
Ivan

Android studio)の抽象クラスに移動すると、以下の情報がより明確になります。

/ ** *

CameraDeviceクラスは、* Androidデバイスに接続された単一のカメラの表現であり、画像キャプチャのきめ細かい制御と*高フレームレートでの後処理を可能にします。

アプリケーションは、カメラデバイスにアクセスするために、マニフェストで* {@link Android.Manifest.permission#CAMERACamera}権限を宣言する必要があります。

特定のカメラデバイスは、制限付きまたは*完全の2つのレベルのいずれかでサポートを提供する場合があります。デバイスが制限されたレベルのみをサポートする場合、Camera2は、よりクリーンで効率的なインターフェイスを備えていますが、古い* {@link Android.hardware.Camera Camera} APIとほぼ同等の*機能セットを公開します。フルレベルのサポートを実装するデバイスは、*古いカメラ* APIよりも大幅に改善された機能を提供します。制限レベルのデバイスを対象とするアプリケーションは、フルレベルのデバイスで変更されずに実行されます。 アプリケーションが適切な操作のためにフルレベルのデバイスを必要とする場合は、*マニフェストで「Android.hardware.camera.level.full」機能を宣言します *。

したがって、camera2について他の人が指摘したのと同じことを言う必要はないか、私は何も信じていません。

0
Manoj Mohanty