RequestAvailableCapabilities Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Listet Werte auf, die von mehreren Methoden von RequestAvailableCapabilities.
public enum RequestAvailableCapabilities
type RequestAvailableCapabilities =
- Vererbung
-
RequestAvailableCapabilities
Felder
| Name | Wert | Beschreibung |
|---|---|---|
| BackwardCompatible | 0 | Der minimale Satz von Funktionen, die jedes Kameragerät (unabhängig von "android.info.supportedHardwareLevel") unterstützt. Diese Funktion wird von allen normalen Geräten aufgelistet und gibt an, dass das Kameragerät über einen Featuresatz verfügt, der mit den grundlegenden Anforderungen für die ältere android.hardware.Camera-API vergleichbar ist. Geräte mit der DEPTH_OUTPUT-Funktion werden diese Funktion möglicherweise nicht auflisten, was darauf hinweist, dass sie nur Tiefenmessungen unterstützen, nicht die Standardfarbausgabe. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| ManualSensor | 1 | Das Kameragerät kann manuell gesteuert werden (3A-Algorithmen wie die automatische Belichtung und der automatische Fokus können umgangen werden). Das Kameragerät unterstützt die grundlegende manuelle Steuerung der Sensorbilderfassungsphasen. Dies bedeutet, dass die folgenden Steuerelemente garantiert unterstützt werden: Manuelles Framedauer-Steuerelement; android.sensor.frameDuration; android.sensor.info.maxFrameDuration; Manuelle Belichtungskontrolle; android.sensor.exposureTime; android.sensor.info.exposureTimeRange; Manuelle Vertraulichkeitssteuerung; android.sensor.sensitivity; android.sensor.info.sensitivityRange; Manuelle Objektivsteuerung (wenn die Linse einstellbar ist); android.lens.*; Manuelle Blitzsteuerung (wenn eine Blitzeinheit vorhanden ist); android.flash.*; Manuelles Sperren auf schwarzer Ebene; android.blackLevel.lock; Automatische Belichtungssperre; android.control.aeLock Wenn eine der oben genannten 3A-Algorithmen aktiviert ist, meldet das Kameragerät die werte, die von 3A angewendet werden, im Ergebnis genau. Ein bestimmtes Kameragerät unterstützt möglicherweise auch zusätzliche manuelle Sensorsteuerelemente, aber diese Funktion deckt nur die obige Liste der Steuerelemente ab. Wenn dies unterstützt wird, gibt android.scaler.streamConfigurationMap zusätzlich eine Minimale Framedauer zurück, die größer als 0 für jede unterstützte Größenformatkombination ist. Bei Kamerageräten mit LOGICAL_MULTI_CAMERA Funktion können sich die zugrundeliegenden aktiven physischen Kameraschalter, Belichtungszeit, Empfindlichkeit und Objektiveigenschaften auch dann ändern, wenn AE/AF gesperrt ist. Die allgemeine automatische Belichtung und die automatische Fokuserfahrung für Benutzer sind jedoch konsistent. Ausführliche Informationen finden Sie unter LOGICAL_MULTI_CAMERA Funktion. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| ManualPostProcessing | 2 | Die Nachbearbeitungsphasen des Kamerageräts können manuell gesteuert werden. Das Kameragerät unterstützt die grundlegende manuelle Steuerung der Nachbearbeitungsphasen des Bilds. Dies bedeutet, dass die folgenden Steuerelemente garantiert unterstützt werden: Manuelles Tonemap-Steuerelement; android.tonemap.curve; android.tonemap.mode; android.tonemap.maxCurvePoints; android.tonemap.gamma; android.tonemap.presetCurve; Manuelle Kontrolle des Weißabgleichs; android.colorCorrection.transform; android.colorCorrection.gains; Manuelles Objektivschattierungs-Kartensteuerelement; android.shading.mode; android.statistics.lensShadingMapMode; android.statistics.lensShadingMap; android.lens.info.shadingMapSize; Manuelle Aberrationskorrekturkontrolle (wenn die Aberrationskorrektur unterstützt wird); android.colorCorrection.aberrationMode; android.colorCorrection.availableAberrationModes; Automatisches Weißabgleichsschloss; android.control.awbLock Wenn der automatische Weißabgleich aktiviert ist, meldet das Kameragerät die von AWB angewendeten Werte im Ergebnis genau. Ein bestimmtes Kameragerät unterstützt möglicherweise auch zusätzliche Nachbearbeitungssteuerelemente, aber diese Funktion deckt nur die obige Liste der Steuerelemente ab. Bei Kamerageräten mit LOGICAL_MULTI_CAMERA-Funktion können sich bei zugrunde liegenden aktiven physischen Kameraschaltern, Tonemap, Weißabgleich und Schattierungskarte auch dann ändern, wenn ein WB gesperrt ist. Die allgemeine Nachbearbeitungserfahrung für Benutzer ist jedoch konsistent. Ausführliche Informationen finden Sie unter LOGICAL_MULTI_CAMERA Funktion. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| Raw | 3 | Das Kameragerät unterstützt die Ausgabe von RAW-Puffern und Metadaten für die Interpretation. Geräte, die die RAW-Funktion unterstützen, ermöglichen sowohl das Speichern von DNG-Dateien als auch die direkte Anwendungsverarbeitung von rohen Sensorbildern.; RAW_SENSOR wird als Ausgabeformat unterstützt; Die maximale verfügbare Auflösung für RAW_SENSOR Datenströme entspricht entweder dem Wert in "android.sensor.info.pixelArraySize" oder "android.sensor.info.preCorrectionActiveArraySize"; Alle DNG-bezogenen optionalen Metadateneinträge werden vom Kameragerät bereitgestellt.
Android-Referenz für Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| PrivateReprocessing | 4 | Das Kameragerät unterstützt den Reprocessing-Anwendungsfall "Zero Shutter Lag". Ein Eingabedatenstrom wird unterstützt, d. h. android.request.maxNumInputStreams == 1; ImageFormat.PRIVATE wird als Ausgabe-/Eingabeformat unterstützt, d. h. ImageFormat.PRIVATE ist in den Listen der Formate enthalten, die von StreamConfigurationMap.getInputFormats() und StreamConfigurationMap.getOutputFormats() zurückgegeben werden; StreamConfigurationMap.getValidOutputFormatsForInput(int) gibt nicht leere Int[] für jedes unterstützte Eingabeformat zurück, das von StreamConfigurationMap.getInputFormats(); Jede von getInputSizes(ImageFormat.PRIVATE) zurückgegebene Größe ist auch in getOutputSizes(ImageFormat.PRIVATE) enthalten; Die Verwendung von ImageFormat.PRIVATE führt nicht zu einem Bildfrequenzabbruch relativ zur maximalen Aufnahmerate des Sensors (bei dieser Auflösung); ImageFormat.PRIVATE kann sowohl in ImageFormat.YUV_420_888 als auch in ImageFormat.JPEG Formaten wiederverarbeitet werden; Für eine MONOCHROME-Kamera, die das Y8-Format unterstützt, wird ImageFormat.PRIVATE in ImageFormat.Y8 wiederverarbeitet; Die maximale verfügbare Auflösung für PRIVATE Streams (beide Eingabe/Ausgabe) entspricht der maximalen verfügbaren Auflösung von JPEG-Streams; Statische Metadaten android.reprocess.maxCaptureStall; Nur unter den Steuerelementen ist die Verarbeitung von Anforderungen wirksam und wird in Aufnahmeergebnissen vorhanden sein, andere Steuerelemente in Reprocess-Anforderungen werden vom Kameragerät ignoriert. android.jpeg.*; android.noiseReduction.mode; android.edge.mode; android.noiseReduction.availableNoiseReductionModes und android.edge.availableEdgeModes listet beide ZERO_SHUTTER_LAG als unterstützten Modus auf. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| ReadSensorSettings | 5 | Das Kameragerät unterstützt die genaue Berichterstellung der Sensoreinstellungen für viele Sensorsteuerelemente, während der integrierte 3A-Algorithmus ausgeführt wird. Dadurch können Sensoreinstellungen auch dann gemeldet werden, wenn diese Einstellungen nicht manuell geändert werden können. Die für die folgenden Steuerelemente gemeldeten Werte sind garantiert im CaptureResult verfügbar, einschließlich der Aktivierung von 3A: Belichtungssteuerelement; android.sensor.exposureTime; Vertraulichkeitssteuerung; android.sensor.sensitivity; Objektivsteuerelemente (wenn das Objektiv einstellbar ist); android.lens.focusDistance; android.lens.blend Diese Funktion ist eine Teilmenge der MANUAL_SENSOR Steuerelementfunktion und wird immer einbezogen, wenn die MANUAL_SENSOR-Funktion verfügbar ist. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| BurstCapture | 6 | Das Kameragerät unterstützt die Aufnahme von hochauflösenden Bildern bei >= 20 Frames pro Sekunde, zumindest im unkomprimierten YUV-Format, wenn die Nachbearbeitungseinstellungen auf FAST festgelegt sind. Darüber hinaus können alle Bildauflösungen unter 24 Megapixel bei >= 10 Frames pro Sekunde aufgenommen werden. Hier bedeutet "hohe Auflösung" mindestens 8 Megapixel oder die maximale Auflösung des Geräts, je nachdem, was kleiner ist. Genauer gesagt bedeutet dies, dass eine Größe, die der aktiven Arraygröße des Kamerageräts entspricht, als unterstützte Größe für das ImageFormat.YUV_420_888-Format in StreamConfigurationMap.getOutputSizes(int) oder StreamConfigurationMap.getHighResolutionOutputSizes(int) mit einer mindesten Framedauer für dieses Format und die Größe von entweder <= 1/20 s < oder= 1/10 s, wenn die Bildgröße kleiner als 24 Megapixel ist; und der Eintrag "android.control.aeAvailableTargetFpsRanges" listet mindestens einen FPS-Bereich auf, wobei der minimale FPS >=1/minimumFrameDuration für das format "maximum-size" YUV_420_888 ist. Wenn diese maximale Größe in StreamConfigurationMap.getHighResolutionOutputSizes(int) aufgeführt ist, enthält die Liste der Auflösungen für YUV_420_888 von StreamConfigurationMap.getOutputSizes(int) mindestens eine Auflösung >= 8 Megapixel mit einer mindesten Framedauer von <= 1/20 s. Wenn das Gerät imageFormat.RAW10, ImageFormat.RAW12, ImageFormat.RAW14, ImageFormat.Y8 unterstützt, können diese auch mit der maximalen Größe YUV_420_888 Auflösung erfasst werden. Wenn das Gerät die PRIVATE_REPROCESSING-Funktion unterstützt, gelten dieselben Garantien wie für das YUV_420_888 Format auch für das ImageFormat.PRIVATE-Format. Darüber hinaus wird das Feld "android.sync.maxLatency" garantiert einen Wert zwischen 0 und 4 einschließlich aufweisen. android.control.aeLockAvailable und android.control.awbLockAvailable sind auch garantiert wahr, sodass die Platzaufnahme mit diesen beiden Sperren ON eine konsistente Bildausgabe liefert. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| YuvReprocessing | 7 | Das Kameragerät unterstützt den YUV_420_888 Reprocessing-Anwendungsfall, ähnlich wie PRIVATE_REPROCESSING, diese Funktion erfordert, dass das Kameragerät Folgendes unterstützt: Ein Eingabedatenstrom wird unterstützt, d. h. android.request.maxNumInputStreams == 1; ImageFormat.YUV_420_888 wird als Ausgabe-/Eingabeformat unterstützt, d. h., YUV_420_888 in den Von StreamConfigurationMap.getInputFormats() und StreamConfigurationMap.getOutputFormats() zurückgegebenen Formaten enthalten ist; StreamConfigurationMap.getValidOutputFormatsForInput(int) gibt nicht leere Int[] für jedes unterstützte Eingabeformat zurück, das von StreamConfigurationMap.getInputFormats(); Jede von getInputSizes(YUV_420_888) zurückgegebene Größe ist auch in getOutputSizes(YUV_420_888) enthalten; Die Verwendung von ImageFormat.YUV_420_888 führt nicht zu einem Bildfrequenzabbruch relativ zur maximalen Aufnahmerate des Sensors (bei dieser Auflösung); ImageFormat.YUV_420_888 können sowohl in ImageFormat.YUV_420_888 als auch in ImageFormat.JPEG Formate neu verarbeitet werden; Die maximale verfügbare Auflösung für ImageFormat.YUV_420_888 Datenströme (beide Eingabe/Ausgabe) entspricht der maximalen verfügbaren Auflösung von ImageFormat.JPEG Datenströmen. Für eine MONOCHROME-Kamera mit Y8-Formatunterstützung gelten alle oben genannten Anforderungen für YUV_420_888 auch für das Y8-Format; Statische Metadaten android.reprocess.maxCaptureStall; Nur die folgenden Steuerelemente sind für die Erneute Verarbeitung von Anforderungen wirksam und werden in den Erfassungsergebnissen vorhanden sein. Die Neuverarbeitungsanforderungen stammen aus den ursprünglichen Erfassungsergebnissen, die den zwischengespeicherten ImageFormat.YUV_420_888 Ausgabepuffern zugeordnet sind. Alle anderen Steuerelemente in den Erneutverarbeitungsanforderungen werden vom Kameragerät ignoriert; android.jpeg.*; android.noiseReduction.mode; android.edge.mode; android.reprocess.effectiveExposureFactor; android.noiseReduction.availableNoiseReductionModes und android.edge.availableEdgeModes listet beide ZERO_SHUTTER_LAG als unterstützten Modus auf. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| DepthOutput | 8 | Das Kameragerät kann Tiefenmessungen aus seinem Sichtfeld erzeugen. Für diese Funktion muss das Kameragerät Folgendes unterstützen: ImageFormat.DEPTH16 wird als Ausgabeformat unterstützt. ImageFormat.DEPTH_POINT_CLOUD wird optional als Ausgabeformat unterstützt; Dieses Kameragerät und alle Kamerageräte mit demselben android.lens.facing werden die folgenden Kalibrierungsmetadateneinträge in CameraCharacteristics und CaptureResult auflisten:; android.lens.poseTranslation; android.lens.poseRotation; android.lens.intrinsicCalibration; android.lens.distortion; Der Eintrag "android.depth.depthIsExclusive" wird von diesem Gerät aufgeführt; Ab Android P wird der Eintrag "android.lens.poseReference" von diesem Gerät aufgeführt; Eine LIMITED-Kamera mit nur der DEPTH_OUTPUT-Funktion muss keine normalen YUV_420_888-, Y8-, JPEG- und PRIV-Formatausgabe unterstützen. Es muss nur das DEPTH16-Format unterstützen. Im Allgemeinen arbeitet die Tiefenausgabe mit einer langsameren Framerate als die Standardfarbaufnahme, sodass die DEPTH16 und DEPTH_POINT_CLOUD Formate häufig eine Sperrdauer aufweisen, die berücksichtigt werden soll (siehe StreamConfigurationMap.getOutputStallDuration(int, Size)). Auf einem Gerät, das sowohl tiefen- als auch farbbasierte Ausgabe unterstützt, wird empfohlen, eine gleichmäßige Vorschau zu ermöglichen, wobei ein Tiefenausgabeziel nur einmal pro N-Frames enthalten ist, wobei N das Verhältnis zwischen Vorschauausgaberate und Tiefenausgaberate einschließlich Tiefenstandszeit ist. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| ConstrainedHighSpeedVideo | 9 | Das Gerät unterstützt eingeschränkte Videoaufzeichnung mit hoher Geschwindigkeit (Bildfrequenz >=120fps). Das Kameragerät unterstützt die Von CameraDevice.createConstrainedHighSpeedCaptureSession(List, StateCallback, Handler) erstellte Sitzung mit hoher Geschwindigkeit, die nur von CameraConstrainedHighSpeedCaptureSession.createHighSpeedRequestList(CaptureRequestList) erstellt wurde. Ein Kameragerät kann das Videostreaming mit hoher Geschwindigkeit weiterhin unterstützen, indem die FPS-Bereiche mit hoher Geschwindigkeit in android.control.aeAvailableTargetFpsRanges angezeigt werden. In diesem Fall gelten alle normalen Aufnahmeanforderungen pro Framesteuerelement und Synchronisierungsanforderungen für die FPS-Bereiche mit hoher Geschwindigkeit, identisch mit allen anderen FPS-Bereichen. Diese Funktion beschreibt die Funktion eines spezialisierten Betriebsmodus mit vielen Einschränkungen (siehe unten), die nur auf Videoaufzeichnung mit hoher Geschwindigkeit ausgerichtet ist. Die unterstützten Highspeed-Videogrößen und FPS-Bereiche werden in StreamConfigurationMap.getHighSpeedVideoFpsRanges() angegeben. Um die gewünschten Ausgabeframeraten zu erhalten, darf die Anwendung nur die Videogröße und FPS-Bereichskombinationen auswählen, die von StreamConfigurationMap.getHighSpeedVideoSizes() bereitgestellt werden. Der FPS-Bereich kann über android.control.aeTargetFpsRange gesteuert werden. In dieser Funktion überschreibt das Kameragerät aeMode, awbMode und afMode auf EIN, AUTO und CONTINUOUS_VIDEO. Alle Steuerelemente für den Blockmodus nach der Verarbeitung werden überschrieben, um FAST zu sein. Daher ist keine manuelle Steuerung der Erfassungs- und Nachbearbeitungsparameter möglich. Alle anderen Steuerelemente funktionieren genauso wie android.control.mode == AUTO. Dies bedeutet, dass alle anderen Android.control.* Felder weiterhin funktionieren, z. B. android.control.aeTargetFpsRange; android.control.aeExposureCompensation; android.control.aeLock; android.control.awbLock; android.control.effectMode; android.control.aeRegions; android.control.afRegions; android.control.awbRegions; android.control.afTrigger; android.control.aePrecaptureTrigger; android.control.zoomRatio Außerhalb von android.control.*funktionieren die folgenden Steuerelemente: android.flash.mode (nur TORCH-Modus, automatischer Blitz für die aufzeichnung funktioniert nicht, da aeMode aktiviert ist); android.lens.opticalStabilizationMode (sofern unterstützt); android.scaler.cropRegion; android.statistics.faceDetectMode (sofern diese unterstützt wird) Bei der Hochgeschwindigkeitsaufzeichnung kann die tatsächliche maximal unterstützte Framerate niedriger sein als die Ausgabe der Kamera, abhängig von den Ziel-Surfaces für die Bilddaten. Wenn die Zieloberfläche z. B. vom Video-Encoder stammt, muss die Anwendung überprüfen, ob der Video-Encoder die hohe Bildfrequenz für eine bestimmte Videogröße unterstützen kann, oder es endet mit einer niedrigeren Bildfrequenz der Aufzeichnung. Wenn die Zieloberfläche aus dem Vorschaufenster stammt, wird die tatsächliche Bildfrequenz der Vorschau an die Aktualisierungsrate des Bildschirms gebunden. Das Kameragerät unterstützt in diesem Modus nur bis zu 2 Hochgeschwindigkeits-Gleichzeitige Ausgabeoberflächen (Vorschau- und Aufnahmeoberflächen). Oberhalb von Steuerelementen ist nur wirksam, wenn alle folgenden Bedingungen zutreffen: Die Anwendung erstellt eine Kameraaufnahmesitzung ohne mehr als 2 Oberflächen über CameraDevice.createConstrainedHighSpeedCaptureSession(List, StateCallback, Handler). Die Zieloberflächen müssen eine Vorschauoberfläche (entweder von SurfaceView oder SurfaceTexture) oder Aufzeichnungsoberfläche (entweder von MediaRecorder.getSurface() oder MediaCodec.createInputSurface()) sein; Die Datenstromgrößen werden aus den von StreamConfigurationMap.getHighSpeedVideoSizes() gemeldeten Größen ausgewählt; Die FPS-Bereiche werden aus StreamConfigurationMap.getHighSpeedVideoFpsRanges() ausgewählt. Wenn die oben genannten Bedingungen NICHT erfüllt sind, schlägt CameraDevice.createConstrainedHighSpeedCaptureSession(List, StateCallback, Handler) fehl. Durch den Wechsel zu einem FPS-Bereich mit unterschiedlichen maximalen FPS können einige Kameragerätekonfigurationen ausgelöst werden, was zu einer zusätzlichen Latenz führen kann. Es wird empfohlen, dass die Anwendung unnötige maximale Ziel-FPS-Änderungen so weit wie möglich während des Hochgeschwindigkeitsstreamings vermeidet. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| MotionTracking | 10 | Das Kameragerät unterstützt den MOTION_TRACKING Wert für android.control.captureIntent, wodurch die maximale Belichtungszeit auf 20 ms begrenzt wird. Dies beschränkt die Bewegungsunschärfe von Aufnahmebildern, was zu besseren Ergebnissen der Bildverfolgung für Anwendungsfälle wie Bildstabilisierung oder Augmented Reality führt. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| LogicalMultiCamera | 11 | Das Kameragerät ist eine logische Kamera, die von zwei oder mehr physischen Kameras unterstützt wird. In API-Ebene 28 müssen die physischen Kameras auch über CameraManager.getCameraIdList() für die Anwendung verfügbar gemacht werden. Ab API-Ebene 29: Einige oder alle physischen Kameras werden möglicherweise nicht unabhängig von der Anwendung verfügbar gemacht, in diesem Fall sind die physischen Kamera-IDs in CameraManager.getCameraIdList() nicht verfügbar. Die Anwendung kann jedoch weiterhin die Eigenschaften der physischen Kameras abfragen, indem Sie CameraManager.getCameraCharacteristics(String) aufrufen; Wenn eine physische Kamera aus der Kamera-ID-Liste ausgeblendet ist, müssen die obligatorischen Datenstromkombinationen für diese physische Kamera über die logische Kamera mit physischen Datenströmen unterstützt werden. Eine Ausnahme besteht darin, dass eine physische Kamera in API-Ebene 30 über "CameraManager.AvailabilityCallback.onPhysicalCameraUnavailable"-Rückruf möglicherweise nicht verfügbar ist. Kombinationen von logischen und physischen Datenströmen oder physischen Datenströmen aus verschiedenen physischen Kameras sind nicht garantiert. Wenn das Kameragerät jedoch CameraDevice.isSessionConfigurationSupported unterstützt, muss die Anwendung in der Lage sein, abzufragen, ob eine Streamkombination mit physischen Datenströmen durch Aufrufen von "CameraDevice.isSessionConfigurationSupported" unterstützt wird. Die Kameraanwendung sollte nicht davon ausgehen, dass es höchstens eine Rückkamera und eine Frontkamera im System gibt. Für eine Anwendung, die zwischen Front- und Rückkameras wechselt, empfiehlt es sich, zwischen der ersten Rückkamera und der ersten Frontkamera in der Liste der unterstützten Kamerageräte zu wechseln. Diese Funktion erfordert, dass das Kameragerät Folgendes unterstützt: Die IDs der zugrunde liegenden physischen Kameras werden über CameraCharacteristics.getPhysicalCameraIds(); Dieses Kameragerät muss statische Metadaten android.logicalMultiCamera.sensorSyncType in CameraCharacteristics auflisten; Die statischen Metadaten der zugrunde liegenden physischen Kameras müssen die folgenden Einträge auflisten, damit die Anwendung Pixel aus den physischen Datenströmen korrelieren kann:; android.lens.poseReference; android.lens.poseRotation; android.lens.poseTranslation; android.lens.intrinsicCalibration; android.lens.distortion; Die SENSOR_INFO_TIMESTAMP_SOURCE des logischen Geräts und physischer Geräte müssen identisch sein; Die logische Kamera muss beschränkt oder höher sein. Die dynamischen Metadaten eines logischen Kamerageräts können android.logicalMultiCamera.activePhysicalId enthalten, um die Anwendung über die aktuelle physische Kamera-ID zu benachrichtigen. Eine aktive physische Kamera ist die physische Kamera, aus der die Hauptbilddaten der logischen Kamera (YUV oder RAW) und Metadaten stammen. Darüber hinaus dient dies als Hinweis darauf, welche physische Kamera verwendet wird, um in einen RAW-Datenstrom auszuzugeben, oder falls nur physische Kameras RAW unterstützen, welche physische RAW-Datenstrom die Anwendung anfordern sollte. Die statischen Metadatentags der logischen Kamera unten beschreiben die standardmäßige aktive physische Kamera. Eine aktive physische Kamera ist standard, wenn sie verwendet wird, wenn die Anwendung direkt Anforderungen verwendet, die aus einer Vorlage erstellt wurden. Alle Vorlagen werden standardmäßig auf dieselbe aktive physische Kamera festgelegt.; android.sensor.info.sensitivityRange; android.sensor.info.colorFilterArrangement; android.sensor.info.exposureTimeRange; android.sensor.info.maxFrameDuration; android.sensor.info.physicalSize; android.sensor.info.whiteLevel; android.sensor.info.lensShadingApplied; android.sensor.referenceIlluminant1; android.sensor.referenceIlluminant2; android.sensor.calibrationTransform1; android.sensor.calibrationTransform2; android.sensor.colorTransform1; android.sensor.colorTransform2; android.sensor.forwardMatrix1; android.sensor.forwardMatrix2; android.sensor.blackLevelPattern; android.sensor.maxAnalogSensitivity; android.sensor.opticalBlackRegions; android.sensor.availableTestPatternModes; android.lens.info.hyperfocalDistance; android.lens.info.minimumFocusDistance; android.lens.info.focusDistanceCalibration; android.lens.poseRotation; android.lens.poseTranslation; android.lens.intrinsicCalibration; android.lens.poseReference; android.lens.distortion Das Sichtfeld physischer Nicht-RAW-Datenströme darf nicht kleiner als die der nicht-RAW-logischen Datenströme oder das maximale Sichtfeld der physischen Kamera sein, je nachdem, welcher Wert kleiner ist. Die Anwendung sollte die metadaten und physischen Kameraeigenschaften der physischen Aufnahmeergebnisse überprüfen, um zu ermitteln, wie die physischen Datenströme zugeschnitten oder vergrößert werden. Siehe "android.lens.focalLength", wie feld-of-view berechnet wird. In der Regel hat der physische Datenstrom der aktiven physischen Kamera das gleiche Sichtfeld wie die logischen Datenströme. Dasselbe gilt jedoch möglicherweise nicht für physische Datenströme von nicht aktiven physischen Kameras. Wenn die logische Kamera beispielsweise eine breit-ultraweite Konfiguration aufweist, bei der das breite Objektiv der Standard ist, wenn der Zuschneidebereich auf die aktive Arraygröße der logischen Kamera festgelegt ist (und das Zoomverhältnis auf 1,0 ab Android 11 festgelegt ist), kann ein physischer Datenstrom für die ultraweite Kamera die Ausgabe von Bildern mit größerem Sichtfeld bevorzugen als die der breiten Kamera, um einen besseren Stereoabgleichsrand oder eine robustere Bewegungsnachverfolgung zu erzielen. Gleichzeitig darf das Ansichtsfeld der physischen Nicht-RAW-Datenströme nicht kleiner als der angeforderte Zuschneidebereich und das Zoomverhältnis sein, solange es sich innerhalb der Funktion der physischen Linse befindet. Beispiel: Bei einer logischen Kamera mit Weittellinsenkonfiguration, bei der das breite Objektiv der Standard ist, wenn der Zuschneidebereich der logischen Kamera auf maximale Größe festgelegt ist und das Zoomverhältnis auf 1,0 festgelegt ist, wird der physische Datenstrom für die Telelinse auf seinen maximalen Zuschneidebereich (kein Zoom) konfiguriert. Veraltet: Vor Android 11 kann das Ansichtsfeld aller nicht-RAW-physischen Datenströme nicht größer sein als die von nicht-RAW-logischen Datenströmen. Wenn die logische Kamera über eine weit ultraweite Objektivkonfiguration verfügt, bei der das breite Objektiv der Standard ist, wenn der Zuschneidebereich der logischen Kamera auf maximale Größe festgelegt ist, entspricht der FOV der physischen Datenströme für die ultraweite Linse dem logischen Datenstrom, indem der Zuschnittbereich kleiner als seine aktive Arraygröße ist, um die kleinere Brennweite zu kompensieren. Bei einer logischen Kamera weisen die zugrunde liegenden physischen Kameras in der Regel unterschiedliche RAW-Funktionen auf (z. B. Auflösung oder CFA-Muster). Es gibt zwei Möglichkeiten für die Anwendung, RAW-Bilder aus der logischen Kamera zu erfassen: Wenn die logische Kamera ÜBER DIE RAW-Funktion verfügt, kann die Anwendung RAW-Datenströme auf die gleiche Weise wie zuvor erstellen und verwenden. Falls ein RAW-Datenstrom konfiguriert ist, um die Abwärtskompatibilität aufrechtzuerhalten, stellt das Kameragerät sicher, dass die standardmäßige aktive physische Kamera aktiv bleibt und nicht zu anderen physischen Kameras wechselt. (Eine Ausnahme besteht darin, dass das Kameragerät, wenn die logische Kamera aus identischen Bildsensoren besteht und aufgrund unterschiedlicher Objektiven mehrere Brennweiten ankündigen, kann das Kameragerät ROH-Bilder aus verschiedenen physischen Kameras basierend auf dem von der Anwendung festgelegten FocusLength generieren.) Dieser abwärtskompatible Ansatz führt in der Regel zu Verlust des optischen Zooms, zum Telephotoobjektiv oder zu ultraweiten Objektiven; Alternativ kann MultiResolutionImageReader verwendet werden, um RAW-Bilder aus einer der zugrunde liegenden physischen Kameras (abhängig vom aktuellen Zoomfaktor) zu erfassen. Da unterschiedliche physische Kameras unterschiedliche RAW-Merkmale aufweisen können, muss die Anwendung die Eigenschaften und Ergebnismetadaten der aktiven physischen Kamera für die relevanten RAW-Metadaten verwenden. Die für abwärtskompatible Kamerafunktionen erforderlichen Aufnahmeanforderungs- und Ergebnismetadatentags basieren ausschließlich auf der logischen Kamerafunktion. Andererseits kann die Verwendung manueller Aufnahmesteuerungen (Sensor oder Nachbearbeitung) mit einer logischen Kamera zu unerwartetem Verhalten führen, wenn die HAL entscheidet, zwischen physischen Kameras mit unterschiedlichen Merkmalen unter der Haube zu wechseln. Wenn die Anwendung beispielsweise die Belichtungszeit und Empfindlichkeit beim Zoomen manuell festlegt, kann sich die Helligkeit der Kamerabilder plötzlich ändern, da HAL von einer physischen Kamera zur anderen wechselt. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| Monochrome | 12 | Das Kameragerät ist eine monochrome Kamera, die kein Farbfilterarray enthält, und für YUV_420_888 Datenstrom sind die Pixelwerte auf Ihnen und V-Ebenen alle 128. Eine MONOCHROME-Kamera muss die garantierten Datenstromkombinationen unterstützen, die für die Geräteebene und -funktionen erforderlich sind. Wenn das Monochrom-Kameragerät das Y8-Format unterstützt, gelten außerdem alle obligatorischen Anforderungen für die Datenstromkombination im Zusammenhang mit YUV_420_888 auch für Y8. Für Bayer-Kamerageräte gibt es keine zwingenden Anforderungen an die Datenstromkombination. Ab Android Q ist die SENSOR_INFO_COLOR_FILTER_ARRANGEMENT einer MONOCHROME-Kamera entweder MONO oder NIR. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| SecureImageData | 13 | Das Kameragerät kann Bilddaten in einen Speicherbereich schreiben, auf den nicht auf Android-Userspace oder den Android-Kernel zugegriffen werden kann und nur für vertrauenswürdige Ausführungsumgebungen (TEE) zugänglich ist. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| SystemCamera | 14 | Auf das Kameragerät kann nur über die Systemkomponenten und privilegierten Anwendungen von Android zugegriffen werden. Prozesse müssen zusätzlich zu "android.permission.CAMERA" über die android.permission.SYSTEM_CAMERA verfügen, um eine Verbindung mit diesem Kameragerät herzustellen. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| OfflineProcessing | 15 | Das Kameragerät unterstützt den OFFLINE_PROCESSING Anwendungsfall. Mit OFFLINE_PROCESSING Funktion kann die Anwendung eine laufende Aufnahmesitzung in den Offlinemodus wechseln, indem sie die CameraCaptureSession#switchToOffline-Methode aufruft und Datenströme angeben, die im Offlinemodus gespeichert werden sollen. Die Kamera beendet dann derzeit aktive wiederholte Anforderungen, bereiten Sie sich auf einige Anforderungen vor, um in den Offlinemodus zu wechseln und ein Offlinesitzungsobjekt zurückzugeben. Nachdem der SwitchToOffline-Aufruf zurückgegeben wurde, befindet sich die ursprüngliche Aufnahmesitzung im geschlossenen Zustand, als ob die CameraCaptureSession#close-Methode aufgerufen wurde. Im Offlinemodus werden alle Inflight-Anforderungen weiterhin im Hintergrund verarbeitet, und die Anwendung kann die Kamera sofort schließen oder eine neue Aufnahmesitzung erstellen, ohne die Ausgabebilder dieser Anforderungen zu verlieren und Ergebnisse zu erfassen. Während das Kameragerät Offlineanforderungen verarbeitet, kann es möglicherweise nicht alle Streamkonfigurationen unterstützen, die es ohne Offlineanforderungen unterstützen kann. In diesem Fall schlägt der createCaptureSession-Methodenaufruf fehl. Die folgenden Datenstromkonfigurationen sind garantiert funktionsfähig, ohne dass die Ressource ausgelastet ist: Eine laufende Offlinesitzung: Ziel einer Ausgabeoberfläche des YUV- oder JPEG-Formats, jeder Auflösung; Die aktive Kameraaufnahmesitzung:; Eine Vorschauoberfläche (SurfaceView oder SurfaceTexture) bis zu 1920 Breite; Eine YUV ImageReader-Oberfläche bis zu 1920 Breite; One Jpeg ImageReader, jede Auflösung: Das Kameragerät darf die JPEG-Ausgabegeschwindigkeit um 50% verlangsamen, wenn eine laufende Offlinesitzung vorhanden ist; Wenn das Gerät PRIVATE_REPROCESSING unterstützt, wird ein Paar ImageWriter/ImageReader-Oberflächen im privaten Format mit derselben Auflösung unterstützt, die größer oder gleich der JPEG ImageReader-Auflösung oben ist; Alternativ kann die oben genannte aktive Kamerasitzung durch eine ältere Kamera durch die folgenden Parametereinstellungen ersetzt werden:; Vorschaugröße bis zu 1920 Breite; Vorschau der Rückrufgröße bis zu 1920 Breite; Videogröße bis zu 1920 Breite; Bildgröße, jede Auflösung: Das Kameragerät darf die JPEG-Ausgabegeschwindigkeit um 50% verlangsamen, wenn eine laufende Offlinesitzung vorhanden ist. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| UltraHighResolutionSensor | 16 | Dieses Kameragerät kann zusätzlich zu den bildgrößen, die in "android.scaler.streamConfigurationMap" beschrieben sind, ultrahoch auflösende Bilder erzeugen. Sie kann im Modus "Standard" und im Modus "Maximale Auflösung" ausgeführt werden. Dies geschieht in der Regel durch das Einbinnieren von Pixeln im Standardmodus und nicht durch das Einbinnieren im Modus "maximale Auflösung". android.scaler.streamConfigurationMap beschreibt die datenströme, die im Standardmodus unterstützt werden. Die im Modus "maximale Auflösung" unterstützten Streamkonfigurationen werden von "android.scaler.streamConfigurationMapMaximumResolution" beschrieben. Die Pixelarraygröße des maximalen Auflösungsmodus eines Kamerageräts (android.sensor.info.pixelArraySize) mit dieser Funktion beträgt mindestens 24 Megapixel. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| RemosaicReprocessing | 17 | Das Gerät unterstützt die Verarbeitung aus dem RAW_SENSOR-Format mit einem Bayer-Muster, das von android.sensor.info.binningFactor (m x n-Pixelgruppe mit demselben Farbfilter) in ein remosaiced normales Bayer-Muster gegeben wird. Diese Funktion ist nur für Geräte mit REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR Funktion vorhanden. Wenn REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR Geräte diese Funktion nicht bewerben, verfügen ImageFormat.RAW_SENSOR-Bilder bereits über ein normales Bayer-Muster. Wenn ein RAW_SENSOR Datenstrom zusammen mit einem anderen Nicht-RAW-Datenstrom in einer CaptureRequest angefordert wird (wenn mehrere Datenströme unterstützt werden, wenn android.sensor.pixelMode auf SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION festgelegt ist), weist der RAW_SENSOR Stream ein normales Bayer-Muster auf. Diese Funktion erfordert, dass das Kameragerät Folgendes unterstützt: Die unten erwähnte StreamConfigurationMap bezieht sich auf das Gerät, das von "android.scaler.streamConfigurationMapMaximumResolution" beschrieben wird; Ein Eingabedatenstrom wird unterstützt, d. h. android.request.maxNumInputStreams == 1; ImageFormat.RAW_SENSOR wird als Ausgabe-/Eingabeformat unterstützt, d. h. ImageFormat.RAW_SENSOR ist in den Listen der formate enthalten, die von StreamConfigurationMap.getInputFormats() und StreamConfigurationMap.getOutputFormats(); StreamConfigurationMap.getValidOutputFormatsForInput(int) gibt nicht leere Int[] für jedes unterstützte Eingabeformat zurück, das von StreamConfigurationMap.getInputFormats(); Jede von getInputSizes(ImageFormat.RAW_SENSOR) zurückgegebene Größe ist auch in getOutputSizes(ImageFormat.RAW_SENSOR) enthalten; Die Verwendung von ImageFormat.RAW_SENSOR führt nicht zu einem Bildfrequenzabbruch relativ zur maximalen Aufnahmerate des Sensors (in dieser Auflösung); Es gelten keine CaptureRequest-Steuerelemente, wenn eine Anforderung über ein Eingabeziel im ImageFormat.RAW_SENSOR-Format verfügt. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| DynamicRangeTenBit | 18 | Das Gerät unterstützt eine oder mehrere 10-Bit-Kameraausgaben gemäß den dynamischen Bereichsprofilen, die in DynamicRangeProfiles.getSupportedProfiles() angegeben sind. Sie können als Teil der Initialisierung der Aufnahmesitzung über OutputConfiguration.setDynamicRangeProfile(long) konfiguriert werden. Kameras, die diese Funktion aktivieren, müssen auch Folgendes unterstützen: Profile DynamicRangeProfiles.HLG10; Alle obligatorischen Datenstromkombinationen für diese spezifische Funktion gemäß Dokumentation; Falls das Gerät nicht in der Lage ist, eine Kombination aus unterstützten 8-Bit- und/oder 10-Bit-Dynamischen Bereichsprofilen innerhalb derselben Aufnahmeanforderung zu erfassen, müssen diese Einschränkungen in DynamicRangeProfiles.getProfileCaptureRequestConstraints(long) aufgeführt werden; Empfohlenes dynamisches Bereichsprofil in CameraCharacteristics.REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| StreamUseCase | 19 | Das Kameragerät unterstützt die Auswahl eines Anwendungsfalles pro Stream über OutputConfiguration.setStreamUseCase(long), sodass das Gerät Kamerapipelineparameter wie Optimierung, Sensormodus oder ISP-Einstellungen für ein bestimmtes Benutzerszenario optimieren kann. Einige Beispielverwendungen dieser Funktion sind: Unterscheiden Sie hochwertige YUV-Aufnahmen von einem regulären YUV-Stream, bei dem die Bildqualität möglicherweise nicht so gut ist wie der JPEG-Stream oder; Verwenden Sie einen Datenstrom, um mehrere Zwecke zu erfüllen: Sucher, Videoaufzeichnung und trotzdem Aufnahme. Dies gilt für Anwendungen, die Bearbeitungen gleichermaßen auf Vorschau, gespeicherte Bilder und gespeicherte Videos anwenden möchten. Diese Funktion erfordert, dass das Kameragerät die folgenden Datenstromanwendungsfälle unterstützt: DEFAULT für Abwärtskompatibilität, bei denen die Anwendung keinen Datenstromanwendungsfall festgelegt hat; VORSCHAU für Live-Sucher und In-App-Bildanalyse; STILL_CAPTURE für die Fotoaufnahme; VIDEO_RECORD zum Aufzeichnen von Videoclips; PREVIEW_VIDEO_STILL für einen einzelnen Datenstrom, der für Sucher, Videoaufzeichnungen und -aufzeichnungen verwendet wird; VIDEO_CALL für lange ausgeführte Videoanrufe CameraCharacteristics.SCALER_AVAILABLE_STREAM_USE_CASES listet alle unterstützten Datenstrom-Anwendungsfälle auf. Weitere Informationen finden Sie in der Richtlinie für die obligatorischen Datenstromkombinationen mit Datenstromnutzungsfällen, die auch über "ObligatorStreamCombination" abgefragt werden können. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
| ColorSpaceProfiles | 20 | Das Gerät unterstützt die Abfrage der möglichen Kombinationen aus Farbräumen, Bildformaten und dynamischen Bereichsprofilen, die von der Kamera unterstützt werden, und das Anfordern eines bestimmten Farbraums für eine Sitzung über SessionConfiguration.setColorSpace(Named). Kameras, die diese Funktion aktivieren, können oder nicht auch dynamische Bereichsprofile implementieren. Andernfalls gibt ColorSpaceProfiles.getSupportedDynamicRangeProfiles(Named, int) nur DynamicRangeProfiles.STANDARD und ColorSpaceProfiles.getSupportedColorSpacesForDynamicRange(int, long) die Unterstützung des DynamicRangeProfiles.STANDARD-Profils in allen Kombinationen von Farbräumen und Bildformaten an. Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden. |
Hinweise
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.