カメラアプリを実装しようとしています。例を確認します。一部の例には、次のマニフェスト機能が含まれています:uses-feature Android:name="Android.hardware.camera2.full
。私は公式文書とグーグルの例をチェックしました、そしてそれらのどれも既存のこの機能に言及していません。 (または私はいくつかが欠けています)。
この機能のソースは何ですか?Android.hardware.camera
の違いは何ですか?
編集:私を混乱させたのは、googlesamples
の例でした。
この
この
彼らは新しいCamera2
APIと古いマニフェストfeatures
を使用しています。両方がどのように組み合わされているのかわかりません。
いつものように、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)古いcamera
apiとは対照的です。
機能フラグとカメラAPIの名前は、同じように見えても実際には関連していません。
機能 "Android.hardware.camera"(PackageManager.FEATURE_CAMERA) は、デバイスに背面カメラがあることを意味します。それで全部です;背面カメラのないデバイスへのインストールを避けたいアプリは、そのアプリをリストする必要があります。
Java Android.hardware.Camera
クラスとは関係ありません。
機能 "Android.hardware.camera.level.full"(PackageManager.FEATURE_CAMERA_LEVEL_FULL) は、デバイス上の少なくとも1台のカメラが フルハードウェアレベル をサポートしていることを示しています。 Android.hardware.camera2
APIパッケージ。
そのため、背面カメラを備えたデバイスには常に「Android.hardware.camera」と表示されます。良いカメラがあれば、また「Android.hardware.camera.level.full」をリストします。
Camera2のサンプルアプリは、あらゆる品質のカメラで実行することを目的としているため、特定のレベルの機能を備えている必要はなく、カメラデバイスがあれば十分です。
一部の開発者が「Android.hardware.camera2」のような機能を要求しようとしているのを見てきました。 Android SDKにはそのような機能が定義されていないため、この機能を要求しようとすると、アプリをどのデバイスにもインストールできなくなります。camera2APIは、Android 5.0(Lollipop);各カメラデバイスがサポートするハードウェアレベル(LEGACY、LIMITED、FULL、またはLEVEL_3)の問題です。
AndroidはAndroid API21以降にCamera2apiを導入しました。この新しいCameraAPIにより、パラメーターの変更がより使いやすく簡単になります。以前のバージョンでは、機能がさらに制限されていました。
Android Camera2には、メーカーによって異なる4つのレベルの実装があります。
ソースはこちら そして個人的な経験。
Android studio)の抽象クラスに移動すると、以下の情報がより明確になります。
/ ** *
CameraDeviceクラスは、* Androidデバイスに接続された単一のカメラの表現であり、画像キャプチャのきめ細かい制御と*高フレームレートでの後処理を可能にします。
アプリケーションは、カメラデバイスにアクセスするために、マニフェストで* {@link Android.Manifest.permission#CAMERACamera}権限を宣言する必要があります。
特定のカメラデバイスは、制限付きまたは*完全の2つのレベルのいずれかでサポートを提供する場合があります。デバイスが制限されたレベルのみをサポートする場合、Camera2は、よりクリーンで効率的なインターフェイスを備えていますが、古い* {@link Android.hardware.Camera Camera} APIとほぼ同等の*機能セットを公開します。フルレベルのサポートを実装するデバイスは、*古いカメラ* APIよりも大幅に改善された機能を提供します。制限レベルのデバイスを対象とするアプリケーションは、フルレベルのデバイスで変更されずに実行されます。 アプリケーションが適切な操作のためにフルレベルのデバイスを必要とする場合は、*マニフェストで「Android.hardware.camera.level.full」機能を宣言します *。
したがって、camera2について他の人が指摘したのと同じことを言う必要はないか、私は何も信じていません。