簡體   English   中英

什么是相同的setDisplayOrientation()的Camera2 API?

[英]What is the Camera2 API Equivalent of setDisplayOrientation()?

使用android.hardware.Camera ,為了使攝像機輸出適當地跟蹤設備移動,我們需要將OrientationEventListenerCamera上的setDisplayOrientation()方法。 這樣,當用戶扭轉設備時,我們可以保持相機預覽中的“向上”與現實世界中的“向上”同步。 對於圍繞Y軸旋轉設備(即,從橫向翻轉到反向橫向或向后),尤其如此。

對於大多數方向更改, android.hardware.camera2 API似乎“正常工作”。 但是,對於Y軸旋轉(橫向 - >反向橫向或反向橫向),相機預覽會被反轉。

Camera為Camera2 API調用setDisplayOrientation()相當於什么,所以我們可以處理這種情況?

正如您所注意到的那樣,這應該在camera2 API上為SurfaceView “正常工作”。

因此,沒有setDisplayOrientation()等價物。

我們之前沒有聽說過這個問題,所以有幾個問題:

  1. 您是否已將應用鎖定為橫向,或者是否允許更改方向?
  2. 您是否處理了自己的方向更改,或者在方向發生變化時是否拆除框架並重新啟動應用程序?
  3. 發生180度旋轉時是否會觸發任何類型的重新布局,例如調整快門按鈕的位置?

使用此CaptureRequest JPEG_ORIENTATION設置顯示方向

captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, 90)

使用下面的公式來獲取設備旋轉。

private int getOrientation(int rotation) {
    return (ORIENTATIONS.get(rotation) + mSensorOrientation + 270) % 360;
}

SensorOrientation是從中分配的字段

characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION) 

谷歌工程師建議的解決方案:yaraki

https://github.com/googlesamples/android-Camera2Basic/issues/24

空無一人。

如果交換顯示方向與傳感器方向相比,它不會“正常工作”(在大多數設備上都是縱向模式),因為您必須為預覽表面設置寬高比<1,即相機2無法映射到適合的輸出尺寸。 解:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM