Faltbare Geräte und Kameras

Hinweis:Diese Seite bezieht sich auf das Paket Camera2. Sofern Ihre App keine bestimmten Low-Level-Funktionen von Camera2 benötigt, empfehlen wir die Verwendung von CameraX. Sowohl CameraX als auch Camera2 unterstützen Android 5.0 (API-Level 21) und höher.

Kameraentwickler stehen möglicherweise vor besonderen Herausforderungen, wenn sie an Kameraanwendungen arbeiten, die auf faltbaren Geräten ausgeführt werden. Im Gegensatz zu Smartphones, bei denen oft mehrere Annahmen in Bezug auf die Display- und Kameraausrichtung und -ausrichtung zutreffen, können faltbare Geräte unterschiedliche Formfaktoren, Displaylayouts und Kamerakombinationen haben.

Smartphones haben in der Regel Kameras im Hochformat, die dem Display entsprechen. Dies gilt jedoch möglicherweise nicht für bestimmte Faltzustände. Ein aufgeklapptes Display kann einen Sensor im Hochformat und einen anderen im Querformat haben.

Wenn Ihre Kameraanwendung eine SurfaceTexture oder eine benutzerdefinierte Rendering-Pipeline verwendet, müssen Sie die Ausrichtung des Kamerasensors beachten.

So wird sichergestellt, dass gerenderte Inhalte immer aufrecht sind und Pixel quadratisch bleiben, sodass sie weder horizontal noch vertikal gedehnt werden.

In diesem Leitfaden erfahren Sie, was Entwickler von Camera2 beachten müssen und wie sie das Rendern der Kameravorschau für verschiedene Zustände faltbarer Geräte anpassen.

Auswirkungen von Gerätestatusänderungen auf Kameras

Beispiele für faltbare Geräte:

  • Zwei oder mehr physische Displays
  • Mehrere physische Kamerageräte

Diese Geräte können je nach Gerätestatus aktiv werden. Um die Gerätestatusverwaltung zu vereinfachen, implementieren bestimmte Geräte eine logische Kamera, die aus zwei oder mehr physischen Sensoren besteht.

Wenn Entwickler das Vorschaustreaming auf einem solchen logischen Kameragerät öffnen und aktivieren, wechselt die Kamera automatisch zwischen den physischen Geräten, je nach dem aktuellen Zustand des Geräts.

Angenommen, Sie haben ein faltbares Gerät mit zwei Displays:

  • Ein normales Porträtdisplay im zusammengeklappten Zustand mit einer physischen „äußeren“ Frontkamera im Hochformat.
  • Ein faltbares Display, das im aufgeklappten Zustand aktiviert ist, mit einer physischen „inneren“ Frontkamera im Querformat im Vergleich zum aufgeklappten Display.

Wenn der Nutzer das Gerät zusammen- oder aufklappt, während eine Anwendung von der logischen Frontkamera streamt, kann die Geräteimplementierung als Reaktion auf jeden Gerätestatuswechsel zwischen den inneren und äußeren physischen Sensoren wechseln.

Möglicherweise muss die Anwendung die Benutzeroberfläche an den Displaywechsel anpassen.

Neben Anpassungen an der Benutzeroberfläche müssen Entwickler möglicherweise auch die Darstellung der Kameravorschau im Hinblick auf die aktive physische Kamera anpassen.

Physische Kameraschalter

Die logische Kamerageräteschnittstelle bietet die erforderlichen APIs zum Umschalten zwischen physischen Kameras. Entwickler müssen den Wert der aktiven physischen ID im Blick behalten.

Auf faltbaren Geräten kann sich das Ergebnis der Erfassung des Ausweisdokuments ändern, wenn der Zustand des Geräts geändert wird, z. B. durch Zusammen- oder Aufklappen.

In solchen Fällen müssen Entwickler die aktuell aktive physische ID verwenden und die entsprechenden Kameraeigenschaften prüfen.

Die beiden wichtigsten Kameraeigenschaften, die sich potenziell ändern und sich auf das Vorschau-Rendering auswirken können, sind die Sensorausrichtung und die Objektivausrichtung.

Wenn die Vorschau-Rendering-Pipeline Ihrer Anwendung statische Kameraparameter zur Berechnung der endgültigen Transformationsmatrix benötigt, müssen Sie die aktuellen Werte übergeben und die Grafiktransformationen aktualisieren.

Weitere Informationen zu Kameravorschau-Pipelines und zur Berechnung von Transformationen finden Sie im Leitfaden zur Kameravorschau.

Weitere ungültige Annahmen

Das Caching von Kameraeigenschaftswerten wird nicht empfohlen.

Sie können nicht davon ausgehen, dass die Kameraeigenschaften konstant bleiben, da sich die Eigenschaften ändern können, wenn das Gerät zusammengeklappt oder aufgeklappt ist. Aus diesem Grund sollten Sie Kameraeigenschaften nicht speichern und wiederverwenden. Prüfen Sie stattdessen jedes Mal die Kameraeigenschaften.

Angenommen, eine Kamera-App wird auf dem äußeren Display gestartet und die aktuellen Eigenschaften der Front- und Rückkamera werden im Cache gespeichert. Wenn die Anwendung auf dem inneren Display neu gestartet wird, hat der aktive physische Frontsensor möglicherweise eine andere Ausrichtung, was möglicherweise unerwünschte Nebenwirkungen beim Rendern der Vorschau auslöst.