Die neue camera2 API verwirrt mich. Ich möchte eine App (für Android-APIs 10 - 21) entwickeln, die die Kamera des Geräts verwendet. Wie hier angegeben , sollte ich die "Kamera" -API verwenden.
Wenn ich jedoch versuche, die "Kamera" -API (android.hardware.Camera) zu den Benutzerfunktionen des Manifests hinzuzufügen , wird sie als veraltet markiert . Andererseits kann ich es nicht in die "camera2" -API (android.hardware.camera2) ändern. da es nur mit der Android-API 21+ (Android 5 - Lollipop) kompatibel ist. Hätte es auch verlinkt, aber ich kann nur hinzufügen 2 Links.
Ich möchte nicht nur, dass meine App auf älteren Android-Versionen ausgeführt wird, sondern auch auf der neuesten ...
Fügen Sie alle Methoden der Kamera, die Sie benötigen, in eine Benutzeroberfläche ein und erstellen Sie eine solche Kamerainstanz
Auf diese Weise haben Sie alles aufgeteilt und es wird Ihr Leben so viel einfacher machen.
Ratschlag - das Leben mit camera2 ist nicht so toll. Verkäufer machen immer noch Mistimplementierungen und Sie müssen daher viele Bedingungen und Problemumgehungen hinzufügen.
Beispiel 1 - S6 meldet, dass Flash nicht unterstützt wird :) Beispiel 2 - Ein LG-Gerät meldet eine Liste der unterstützten Bildgrößen zurück - jedoch werden nicht alle tatsächlich unterstützt !!
quelle
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraID); if (characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL) == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY)...
, die alte API aufzurufen und auszuwählen, wenn sie wahr ist.Verwenden Sie den folgenden Code, um die gewünschte API zu unterstützen. Bestimmen Sie einfach die entsprechenden Namen, die den API-Ebenen entsprechen. Beispielsweise ist API 21 LOLLIPOP und API 15 ICE_CREAM_SANDWICH_MR1.
quelle
Obwohl, was Google empfiehlt, verwenden Sie Camera2 Api> = 21, aber Sie könnten Probleme mit manuellen Einstellungen haben.
Wenn Sie eine App zum Aufnehmen von Fotos im automatischen Einstellungsmodus benötigen, funktioniert dies einwandfrei. Aber! Wenn Sie eine App mit der Implementierung des manuellen Einstellungsmodus erstellen müssen, müssen Sie für Geräte mit API> = 21 zunächst die unterstützte HARDWARE-EBENE überprüfen:
Wählen Sie die Kamera (Vorderseite, Gesicht), ermitteln Sie die Eigenschaften und überprüfen Sie die HARDWARE-EBENE.
CameraCharacteristics repräsentieren die nächsten unterstützten Ebenen: LIMITED, FULL, LEGACY, LEVEL_3, EXTERNAL.
Auf einem hohen Niveau sind die Niveaus:
LEGACY- Geräte arbeiten für ältere Android-Geräte in einem Abwärtskompatibilitätsmodus und verfügen nur über sehr eingeschränkte Funktionen.
LIMITED- Geräte stellen den Basisfeature-Satz dar und können auch zusätzliche Funktionen enthalten, die Teilmengen von FULL sind.
FULL- Geräte unterstützen zusätzlich die manuelle Steuerung von Sensor-, Blitz-, Objektiv- und Nachbearbeitungseinstellungen pro Frame sowie die Bilderfassung mit hoher Geschwindigkeit.
STUFE 3 Geräte unterstützen zusätzlich die YUV-Wiederaufbereitung und die RAW-Bilderfassung sowie zusätzliche Konfigurationen für den Ausgabestream.
Wenn Sie das LEGACY Supprot-Level erreicht haben, sollten Sie die alte Kamera- API verwenden .
quelle
Verwenden Sie die Support-Annotation
um eine Überprüfung zu vermeiden
quelle
Plz read link Unterstützung der Kameraversion Sie geben an, dass ...
Kamera-API1
Android 5.0 veraltete Kamera-API1, die weiterhin ausläuft, da sich die Entwicklung neuer Plattformen auf die Kamera-API2 konzentriert. Die Auslaufphase wird jedoch lang sein, und Android-Versionen werden noch einige Zeit die Kamera-API1-Apps unterstützen. Insbesondere wird die Unterstützung für Folgendes fortgesetzt:
quelle
Ich fand heraus, dass die beste Option darin besteht, zwei Aktivitäten zu erstellen. Verwenden Sie die allgemeine Methode, um nach der aktuellen Geräte-API zu suchen
Auf diese Weise muss ich nicht viel Verwirrung stiften, wenn ich auf den Code zurückblicke. Der Code kann leicht geändert werden, da er getrennt ist.
quelle