
作者 / Android 開發(fā)者關(guān)系工程師 Francesco Romano
預(yù)覽 (Preview)
https://developer.android.google.cn/training/camerax/preview
CaptureSession
https://developer.android.google.cn/reference/android/hardware/camera2/CameraDevice#createCaptureSession(android.hardware.camera2.params.SessionConfiguration)
不要假定應(yīng)用將一直在縱向窗口中運行。Android 13 仍然支持應(yīng)用固定屏幕方向的請求,但現(xiàn)在設(shè)備制造商可以選擇覆蓋應(yīng)用的首選屏幕方向請求。
不要假定應(yīng)用有任何固定尺寸或?qū)捀弑?/span>。即使您設(shè)置了 resizableActivity = "false",您的應(yīng)用仍然可以在大屏幕設(shè)備 (>=600dp) 上以多窗口模式使用。
不要假定屏幕方向和相機方向之間存在固定關(guān)系。《Android 兼容性定義文檔》中明確了相機圖像傳感器 "必須朝向正確方向,以便相機的長度方向與屏幕的長度方向?qū)R"。從 API 級別 32 開始,查詢可折疊設(shè)備方向的相機客戶端可以收到一個根據(jù)設(shè)備/折疊狀態(tài)動態(tài)變化的值。
Android 兼容性定義文檔
https://source.android.com/docs/compatibility/13/android-13-cdd#755_camera_orientation
不要假定邊襯區(qū)的大小無法更改。新的任務(wù)欄會作為邊襯區(qū)報告給應(yīng)用,且當(dāng)任務(wù)欄與手勢導(dǎo)航一起使用時,任務(wù)欄可以動態(tài)隱藏和顯示。
不要假定您的應(yīng)用享有專屬的相機訪問權(quán)限。當(dāng)您的應(yīng)用處于多窗口模式時,其他應(yīng)用也可以獲得對相機和麥克風(fēng)等共享資源的訪問權(quán)限。
雖然 CameraX 已經(jīng)能處理上述大多數(shù)情況,但使用 Camera2 API 實現(xiàn)適用于不同場景的預(yù)覽可能會很復(fù)雜。我們在 "在您的相機應(yīng)用中支持可調(diào)整大小的 Surface" Codelab 中介紹了這一點。
在您的相機應(yīng)用中支持可調(diào)整大小的 Surface
https://developer.android.google.cn/codelabs/android-camera2-preview
隆重推出 CameraViewfinder
CameraViewfinder
https://developer.android.google.cn/reference/kotlin/androidx/camera/viewfinder/CameraViewfinder
implementation "androidx.camera:camera-viewfinder:1.3.0-alpha01"<androidx.camera.viewfinder.CameraViewfinder
android:id="@+id/view_finder"
app:scaleType="fitCenter"
app:implementationMode="performance"
android:layout_width="match_parent"
android:layout_height="match_parent"/>View
https://developer.android.google.cn/reference/android/view/View
PreviewView
https://developer.android.google.cn/reference/kotlin/androidx/camera/view/PreviewView
實現(xiàn)模式
https://developer.android.google.cn/training/camerax/preview#implementation-mode
縮放類型
https://developer.android.google.cn/training/camerax/preview#scale-type
現(xiàn)在該組件是布局的一部分,您仍然可以創(chuàng)建 CameraCaptureSession,但不提供 TextureView 或 SurfaceView 作為目標(biāo)界面,而是使用 requestSurfaceAsync() 的結(jié)果。
fun startCamera(){
val previewResolution = Size(width, height)
val viewfinderSurfaceRequest =
ViewfinderSurfaceRequest(previewResolution, characteristics)
val surfaceListenableFuture =
cameraViewfinder.requestSurfaceAsync(viewfinderSurfaceRequest)
Futures.addCallback(surfaceListenableFuture, object :FutureCallback {
override fun onSuccess(surface:Surface) {
//像往常一樣使用這個界面創(chuàng)建 CaptureSession
}
override fun onFailure(t:Throwable) { /* 出錯了 */}
}, ContextCompat.getMainExecutor(context))
}CameraCaptureSession https://developer.android.google.cn/reference/android/hardware/camera2/CameraCaptureSession requestSurfaceAsync()
https://developer.android.google.cn/reference/kotlin/androidx/camera/viewfinder/CameraViewfinder#requestSurfaceAsync(androidx.camera.viewfinder.ViewfinderSurfaceRequest)
附加功能: 可折疊設(shè)備的布局優(yōu)化
Jetpack WindowManager
https://developer.android.google.cn/jetpack/androidx/releases/window
處理姿勢變化的代碼
https://github.com/androidx/androidx/blob/androidx-main/camera/integration-tests/viewfindertestapp/src/main/java/androidx/camera/integration/viewfinder/CameraViewfinderFoldableFragment.kt#L583

?點擊屏末|閱讀原文|即刻了解 CameraViewfinder 更多相關(guān)信息


原文標(biāo)題:輕松實現(xiàn)相機預(yù)覽 | Camera Viewfinder 全新上線
文章出處:【微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
谷歌
+關(guān)注
關(guān)注
27文章
6254瀏覽量
111373
原文標(biāo)題:輕松實現(xiàn)相機預(yù)覽 | Camera Viewfinder 全新上線
文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Camera應(yīng)用旋轉(zhuǎn)預(yù)覽拉伸Bug:RK3588+Android 12環(huán)境下的復(fù)現(xiàn)、分析與臨時解決方案
索尼更新相機遙控軟件開發(fā)包2.01版本
恩智浦嵌入式HMI應(yīng)用開發(fā)工具GUI Guider 1.10.1全新上線
黑白相機與彩色相機的成像優(yōu)勢分析以及常見的誤區(qū)說明
Camera Link 信號源板卡學(xué)習(xí)資料第153篇: 基于Sprtan6的Full(Base) Camera Link 信號源
OpenAI Sora 2模型上線微軟Azure AI Foundry國際版
重磅發(fā)布 | 深視智能全新背照式制冷sCMOS相機上市,突破靈敏度和噪聲極限
如何利用Trace機制實現(xiàn)LLCP預(yù)覽功能
Zivid3D相機安裝使用教程
工業(yè)相機基本知識解讀:像元、幀率、數(shù)據(jù)接口等--51camera
輕松實現(xiàn)相機預(yù)覽 | Camera Viewfinder 全新上線
評論