android / android/camera-samples

OrientationLiveData is incorrect when camera sensor orientation is 0 degrees

Offen
#361 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Kotlin
Sterne
5.5k
Forks
2.4k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

https://github.com/android/camera-samples/blob/main/Camera2Video/utils/src/main/java/com/example/android/camera/utils/OrientationLiveData.kt

This method returns 270 when device is on landscape orientation (Surface.ROTATION_90) and camera orientation degrees is 0

```computeRelativeRotation(Surface.ROTATION_90)``` returns 90 for 0 camera sensor degrees but should return 0

private fun computeRelativeRotation(
surfaceRotation: Int
): Int {
val sensorOrientationDegrees = 0 // hardcoded just for test camera with such orientation deegres

val deviceOrientationDegrees = when (surfaceRotation) {
Surface.ROTATION_0 -> 0
Surface.ROTATION_90 -> 90
Surface.ROTATION_180 -> 180
Surface.ROTATION_270 -> 270
else -> 0
}

// Reverse device orientation for front-facing cameras
val sign = -1

// Calculate desired JPEG orientation relative to camera orientation to make
// the image upright relative to the device orientation
return (sensorOrientationDegrees - (deviceOrientationDegrees * sign) + 360) % 360
}

Some devices for auto (vehicles) like **alps YT9213AJ** support external usb camera and it returns 0 camera sensor orientation

So this would rotate a recording video by 90 when playing i, will be setOrientationHint(90)

https://github.com/android/camera-samples/blob/main/Camera2Video/app/src/main/java/com/example/android/camera2/video/fragments/CameraFragment.kt#L273

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit Camera2Video/utils/src/main/java/com/example/android/camera/utils/OrientationLiveData.kt und untersuche computeRelativeRotation. Verfolge anschließend seine Verwendung in Camera2Video/app/src/main/java/com/example/android/camera2/video/fragments/CameraFragment.kt im Bereich von setOrientationHint. Überprüfe den gemeldeten Fall Surface.ROTATION_90 bei einer Kamera-Sensororientierung von 0; die Aufgabe ist abgeschlossen, wenn die Aufzeichnung keinen falschen Orientierungshinweis von 90 Grad mehr erhält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
kotlin
Bereich
mobile-dev
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.