ช่องมองภาพของกล้อง
ตารางนี้แสดงอาร์ติแฟกต์ทั้งหมดในกลุ่ม androidx.camera-viewfinder
อาร์ติแฟกต์ | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
ช่องมองภาพ-จัดองค์ประกอบ | 1.5.0 | - | - | 1.4.0-alpha13 |
viewfinder-core | 1.5.0 | - | - | 1.4.0-alpha13 |
มุมมองช่องมองภาพ | 1.5.0 | - | - | 1.4.0-alpha13 |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน camera-viewfinder คุณต้องเพิ่มที่เก็บ Maven ของ Google ลงในโปรเจ็กต์ อ่านข้อมูลเพิ่มเติมได้ที่ที่เก็บ Maven ของ Google
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่ต้องการในไฟล์ build.gradle
สำหรับ
แอปหรือโมดูล
ดึงดูด
dependencies { // Use to implement camera viewfinders implementation "androidx.camera.viewfinder:viewfinder-view:1.5.0" implementation "androidx.camera.viewfinder:viewfinder-compose:1.5.0" implementation "androidx.camera.viewfinder:viewfinder-core:1.5.0" }
Kotlin
dependencies { // Use to implement camera viewfinders implementation("androidx.camera.viewfinder:viewfinder-view:1.5.0") implementation("androidx.camera.viewfinder:viewfinder-core:1.5.0") implementation("androidx.camera.viewfinder:viewfinder-compose:1.5.0") }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการพึ่งพาได้ที่เพิ่มการพึ่งพาบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยเราปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนสร้างปัญหาใหม่ คุณสามารถโหวตปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของเครื่องมือติดตามปัญหา
รุ่น 1.5
เวอร์ชัน 1.5.0
10 กันยายน 2025
androidx.camera.viewfinder:viewfinder-compose:1.5.0
androidx.camera.viewfinder:viewfinder-core:1.5.0
และ androidx.camera.viewfinder:viewfinder-view:1.5.0
ออกอากาศแล้ว เวอร์ชัน 1.5.0 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.4.0
นี่คือรุ่นที่มีความเสถียรแรกของไลบรารีช่องมองภาพของกล้อง ซึ่งมี API ที่อิงตาม View และ Compose ที่มีประสิทธิภาพ ตระหนักถึงวงจร และใช้งานง่าย คอมโพเนนต์เหล่านี้ออกแบบมาเพื่อใช้เป็นช่องมองภาพของกล้องและสามารถผสานรวมกับ Camera2 ได้โดยตรง
การเปิดตัวนี้ยังเป็นการวางรากฐานสำหรับอาร์ติแฟกต์ androidx.camera:camera-compose
ใหม่ ซึ่งจะเปิดตัว CameraXViewfinder
ช่องมองภาพที่ใช้ Compose ซึ่งผสานรวมกับ SurfaceRequest
ของ CameraX ได้อย่างราบรื่น เช่นเดียวกับวิธีที่ PreviewView
ทำงานกับเลย์เอาต์ที่อิงตาม View การเปลี่ยนแปลงที่สำคัญที่สุดบางส่วน ได้แก่
- การย้ายที่เก็บข้อมูล: เราได้ย้ายที่เก็บข้อมูลของ Viewfinder ไปยังกลุ่มไลบรารีของตัวเองเพื่อปรับปรุงความสามารถในการแยกส่วน นักพัฒนาแอปที่เคยใช้การอ้างอิง
androidx.camera:camera-viewfinder*
ควรย้ายข้อมูลไปยังandroidx.camera.viewfinder:viewfinder-*
- การปรับปรุงและทำให้ API เสถียร: เราได้ปรับปรุงพื้นผิว API สำหรับรุ่นเสถียรนี้ ซึ่งรวมถึงการเปลี่ยนชื่อ
CameraViewfinder
เป็นViewfinderView
เพื่อให้สะท้อนถึงความสามารถรอบด้านได้ดียิ่งขึ้น การจัดระเบียบแพ็กเกจใหม่เพื่อให้ชัดเจน และการทำให้ViewfinderSurfaceRequest
เป็นประเภทข้อมูลที่ไม่เปลี่ยนแปลงเพื่อการจัดการสถานะที่คาดการณ์ได้มากขึ้น - การอัปเดต Compose API: ตอนนี้ Compose
Viewfinder
API รองรับContentScale
และAlignment
เพื่อให้ควบคุมได้อย่างละเอียดว่าจะแสดงสตรีมกล้องภายในคอนเทนเนอร์อย่างไร ซึ่งจะจำลองลักษณะการทำงานของandroidx.compose.foundation.Image
ที่ใช้ร่วมกันได้มาตรฐาน - การจัดการวงจรของ Surface:
ViewfinderSurfaceSession
จะยังคงใช้งานได้เมื่อมีการเปลี่ยนแปลงการกำหนดค่าและเหตุการณ์วงจรใน API 29 ขึ้นไป การเปลี่ยนแปลงนี้ออกแบบมาเพื่อลดเฟรมที่หลุดและมอบประสบการณ์การใช้งานที่ราบรื่นยิ่งขึ้น - ค่าเริ่มต้นของโหมดการติดตั้งใช้งาน: ตอนนี้
Viewfinder
จะเป็นค่าเริ่มต้นของImplementationMode
อัจฉริยะที่เลือกการติดตั้งใช้งานพื้นฐานที่ดีที่สุดโดยอัตโนมัติ โดยจะให้ความสำคัญกับSurfaceView
ที่มีประสิทธิภาพสูง (โหมดEXTERNAL
) และจะเปลี่ยนไปใช้TextureView
ที่เข้ากันได้มากกว่า (โหมดEMBEDDED
) อย่างราบรื่นใน API ระดับที่เก่ากว่าหรืออุปกรณ์ที่ทราบว่ามีปัญหาด้านความเข้ากันได้ อย่างไรก็ตาม คุณยังคงลบล้างลักษณะการทำงานนี้ได้เพื่อให้ผู้พัฒนาควบคุมได้อย่างเต็มที่
การแก้ไขข้อบกพร่อง
- ตอนนี้
Viewfinder
ที่ประกอบได้ทำงานอย่างถูกต้องภายในPager
ของ Compose และกับmovableContentOf()
เพื่อให้มั่นใจว่าระบบจะรีเซ็ตและจัดการพื้นผิวอย่างถูกต้องในสถานการณ์ UI ที่ซับซ้อน (I0d9be, I79432) - แก้ไขปัญหาใน Android 10 และ 11 ที่
SurfaceView
ซึ่งอิงตามViewfinder
อาจดูยืดออกเมื่อใช้การเปลี่ยนรูป (Icc77c)
เวอร์ชัน 1.5.0-rc01
13 สิงหาคม 2025
androidx.camera.viewfinder:viewfinder-compose:1.5.0-rc01
androidx.camera.viewfinder:viewfinder-core:1.5.0-rc01
และ androidx.camera.viewfinder:viewfinder-view:1.5.0-rc01
ออกอากาศแล้ว เวอร์ชัน 1.5.0-rc01 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- การย้าย
minSdk
เริ่มต้นจาก API 21 ไปยัง API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
เวอร์ชัน 1.5.0-beta03
16 กรกฎาคม 2025
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta03
androidx.camera.viewfinder:viewfinder-core:1.5.0-beta03
และ androidx.camera.viewfinder:viewfinder-view:1.5.0-beta03
ออกอากาศแล้ว เวอร์ชัน 1.5.0-beta03 มีการเปลี่ยนแปลงเหล่านี้
การแก้ไขข้อบกพร่อง
- ตอนนี้
ImplementationMode
เริ่มต้นสำหรับViewfinder
(ทั้งแบบ Compose และแบบ View) จะเลือกอย่างชาญฉลาดระหว่างEXTERNAL
(เพื่อประสิทธิภาพ) กับEMBEDDED
(เพื่อความเข้ากันได้ใน API รุ่นเก่า/อุปกรณ์ที่ทำงานผิดปกติ) อย่างไรก็ตาม คุณยังคงลบล้างลักษณะการทำงานนี้ได้ด้วยการตั้งค่าที่ชัดเจนในViewfinderSurfaceRequest
หรือแอตทริบิวต์ XML (ใน API ที่อิงตามมุมมอง) (Iecd3a) - ปรับปรุงการจัดการเซสชัน Surface โดยอนุญาตให้
ViewfinderSurfaceSession
ทำงานต่อไปได้ตลอดวงจรการสร้าง/ทำลาย Surface เมื่อใช้ TextureView หรือ SurfaceView ใน API 29 ขึ้นไป (I112d9) - ตอนนี้
Viewfinder
จะช่วยให้มั่นใจได้ว่า Surface จะได้รับการเผยแพร่ในเวลาที่เหมาะสม เมื่อเซสชันไม่ได้ใช้งานแล้วเท่านั้น ไม่ใช่เผยแพร่ทุกครั้งที่มีการทิ้ง Composable สำหรับEXTERNAL
(SurfaceView
) ปัจจุบันลักษณะการทำงานนี้ใช้ได้เฉพาะใน API 29 ขึ้นไป สำหรับEMBEDDED
(TextureView
) ลักษณะการทำงานนี้จะอยู่ใน API ทุกระดับ (I9a03f) - ตอนนี้
Viewfinder
จะจัดการการแทนที่พื้นผิวอย่างถูกต้องในสถานการณ์ต่างๆ เช่น เมื่อEXTERNAL
ช่องมองภาพใน API ระดับ 28 หรือต่ำกว่าเลื่อนออกนอกหน้าจอ หรือหากViewfinder
(มีImplementationMode
ใดก็ตาม) เป็นส่วนหนึ่งของmoveableContentOf()
(I79432) - ตอนนี้ Composable
Viewfinder
ทำงานร่วมกับPager
ของ Compose ได้อย่างถูกต้องแล้ว การเปลี่ยนแปลงนี้ช่วยให้มั่นใจได้ว่าสามารถรีเซ็ต Composable ได้สำเร็จโดยการใช้onReset
Callback ของAndroidView
ซึ่งรองรับทั้งการใช้งานEMBEDDED
และEXTERNAL
(I0d9be) - แก้ไขปัญหาใน Android 10/11 ที่
EXTERNAL
Viewfinder
อาจดูยืดออกหรือผิดเพี้ยนเนื่องจากมีการดำเนินการเปลี่ยนรูปแบบ (เช่น การปรับขนาดหรือการแปล) เร็วเกินไป ตอนนี้ระบบจะรอให้สร้าง Surface ก่อนที่จะใช้การเปลี่ยนรูปแบบเหล่านี้ในระยะเลย์เอาต์ เพื่อให้มั่นใจว่าเอาต์พุตถูกต้อง (Icc77c)
เวอร์ชัน 1.5.0-beta02
4 มิถุนายน 2025
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta02
androidx.camera.viewfinder:viewfinder-core:1.5.0-beta02
และ androidx.camera.viewfinder:viewfinder-view:1.5.0-beta02
ออกอากาศแล้ว เวอร์ชัน 1.5.0-beta02 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.5.0-beta01
7 พฤษภาคม 2025
androidx.camera.viewfinder:viewfinder-compose:1.5.0-beta01
androidx.camera.viewfinder:viewfinder-core:1.5.0-beta01
และ androidx.camera.viewfinder:viewfinder-view:1.5.0-beta01
ออกอากาศแล้ว เวอร์ชัน 1.5.0-beta01 มีการเปลี่ยนแปลงเหล่านี้
- นี่คือเวอร์ชันเบต้าอย่างเป็นทางการครั้งแรกของช่องมองภาพที่อิงตามมุมมองและอิงตาม Compose ซึ่งมีความยืดหยุ่นเพียงพอที่จะใช้กับ Camera2 ได้ หากกำลังมองหา View หรือ Composable ที่จะใช้กับ CameraX โปรดดู
PreviewView
และCameraXViewfinder
ฟีเจอร์ใหม่
- ตอนนี้คุณใช้
ContentScale
และAlignment
ในช่องมองภาพที่อิงตามการเขียนได้แล้วเพื่อปรับขนาดและวางพื้นผิวที่แสดงภายในคอนเทนเนอร์ ซึ่งคล้ายกับลักษณะการทำงานของandroidx.compose.foundation.Image
(Ibcea3)
การเปลี่ยนแปลง API
TransformationInfo
มีค่าเริ่มต้นสำหรับอาร์กิวเมนต์ทั้งหมดแล้ว ซึ่งจะช่วยให้สร้าง Viewfinder ได้โดยไม่มีTransformationInfo
ซึ่งจะตั้งค่าเริ่มต้นเป็นการหมุนแหล่งที่มาเป็น 0 ไม่มีการมิเรอร์แหล่งที่มา และไม่มีสี่เหลี่ยมผืนผ้าครอบตัด (I2b1b2)- ตอนนี้ Composable Viewfinder จะใช้ Lambda ต่อท้ายเพื่อรับเซสชัน Surface ซึ่งคล้ายกับ
AndroidExternalSurface
Lambda ที่ระบุใช้ViewfinderInitScope
เป็นตัวรับ ซึ่งช่วยให้ติดตั้งการเรียกกลับเพื่อรับเซสชัน Surface ใหม่ได้ เซสชันของพื้นผิวเหล่านี้จะปล่อยทรัพยากรที่ Viewfinder ถือครองโดยอัตโนมัติเมื่ออยู่นอกขอบเขต (Ib2b0d) ViewfinderSurfaceRequest.Builder.populateFromCharacteristics
ถูกนำออกแล้วและแทนที่ด้วยชุด API แบบคงที่ที่เทียบเท่ากัน ซึ่งสามารถใช้สร้างTransformationInfo
ที่จะสร้างการเปลี่ยนรูปแบบเดียวกันกับpopulateFromCharacteristics
ระบบจะเพิ่มเมธอดแบบคงที่เหล่านี้ลงในคลาสCamera2TransformationInfo
(Idc6af)ViewfinderSurfaceRequest
ไม่มี API แบบไม่พร้อมกันสำหรับการดึงข้อมูลพื้นผิวอีกต่อไป ตอนนี้เป็นประเภทข้อมูลที่เปลี่ยนแปลงไม่ได้แล้ว ตอนนี้ API สำหรับดึงข้อมูล Surface ได้ย้ายไปที่ช่องมองภาพแล้ว (I30127)- เราได้เปลี่ยนชื่อ
CameraViewfinder
เป็นViewfinderView
เพื่อให้การตั้งชื่อสอดคล้องกับการตั้งชื่อของ Viewfinder ที่ใช้ร่วมกันได้ และเพื่อระบุว่าสามารถใช้กับแหล่งที่มาอื่นๆ นอกเหนือจากกล้องได้ (Id9e6b) - ย้ายคลาสจาก
viewfinder-view
ไปยังแพ็กเกจย่อยandroidx.camera.viewfinder.view
จากแพ็กเกจandroidx.camera.viewfinder
แล้ว (I6cb44) - เราได้เพิ่ม API ใหม่ลงในช่องมองภาพที่อิงตามมุมมอง ซึ่งช่วยให้ตั้งค่าการหมุนแหล่งที่มา การมิเรอร์ และสี่เหลี่ยมผืนผ้าครอบตัดได้
TransformationInfo
คลาสนี้เป็นคลาสเดียวกับที่ Viewfinder ที่อิงตาม Compose ใช้ (I907c3) - ตอนนี้ช่องมองภาพที่อิงตามมุมมองใช้
ViewfinderSurfaceRequest
API ใหม่ซึ่งจะไม่จัดการการตอบกลับของ Surface ภายในอีกต่อไป ตอนนี้ APIrequestSurfaceSession()
จะแสดงผลListenableFuture<ViewfinderSurfaceSession>
แทนที่จะแสดงผลListenableFuture<Surface>
ซึ่งจะแสดงผลคลาสAutoCloseable
ที่เมื่อปิดแล้วจะทํางานในลักษณะเดียวกับการเรียก API เก่าของViewfinderSurfaceRequest.markSurfaceSafeToRelease()
ซึ่งจะช่วยให้แยกความรับผิดชอบระหว่างคำขอของแพลตฟอร์มกับคำตอบของแพลตฟอร์มได้ชัดเจนยิ่งขึ้น (I19041)
เวอร์ชัน 1.4
เวอร์ชัน 1.4.0-alpha13
26 กุมภาพันธ์ 2025
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13
androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13
และ androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13
ออกอากาศแล้ว เวอร์ชัน 1.4.0-alpha13 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.4.0-alpha12
15 มกราคม 2025
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12
androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12
และ androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12
ออกอากาศแล้ว เวอร์ชัน 1.4.0-alpha12 มีการเปลี่ยนแปลงเหล่านี้
ฟีเจอร์ใหม่
- อัปเกรดเป็น
compileSdk
เป็น 35 สำหรับการใช้ API ที่เกี่ยวข้องกับ Android 15 แอปที่ใช้ไลบรารี CameraX จะต้องอัปเกรดcompileSdk
การตั้งค่า Config ด้วย (Ic80cd) - ตอนนี้ไลบรารีนี้ใช้คำอธิบายประกอบเกี่ยวกับค่า Null ของ JSpecify ซึ่งเป็นแบบใช้ประเภท นักพัฒนาซอฟต์แวร์ Kotlin ควรใช้อาร์กิวเมนต์คอมไพเลอร์ต่อไปนี้เพื่อบังคับใช้การใช้งานที่ถูกต้อง
-Xjspecify-annotations=strict
(นี่คือค่าเริ่มต้นที่เริ่มต้นด้วยคอมไพเลอร์ Kotlin เวอร์ชัน 2.1.0) (I7bcd7, b/326456246)
เวอร์ชัน 1.4.0-alpha11
11 ธันวาคม 2024
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha11
androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha11
และ androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha11
ออกอากาศแล้ว เวอร์ชัน 1.4.0-alpha11 มีการเปลี่ยนแปลงเหล่านี้
การเปลี่ยนแปลง API
viewfinder-core
ได้ย้ายไปอยู่ในแพ็กเกจที่สอดคล้องกับไลบรารีที่แพ็กเกจนั้นๆ สังกัดอยู่ (I431c6)CameraViewfinder.ScaleType
ได้ย้ายไปที่viewfinder-core
แล้วเพื่อให้ใช้ซ้ำกับ Compose ได้ (I87ef1)- ระบบจะนำชั้นเรียน
CameraViewfinder
ที่เลิกใช้งานแล้วออก โปรดใช้ API ใหม่ซึ่งมีฟังก์ชันการทำงานเทียบเท่า (I6e59a)
เวอร์ชัน 1.4.0-alpha10
30 ตุลาคม 2024
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha10
androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha10
และ androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha10
ออกอากาศแล้ว เวอร์ชัน 1.4.0-alpha10 มีการเปลี่ยนแปลงเหล่านี้
เวอร์ชัน 1.4.0-alpha09
2 ตุลาคม 2024
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha09
androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha09
และ androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha09
ออกอากาศแล้ว เวอร์ชัน 1.4.0-alpha09 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.4.0-alpha08
4 กันยายน 2024
androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha08
androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha08
และ androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha08
ออกอากาศแล้ว เวอร์ชัน 1.4.0-alpha08 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
เมื่ออัปเดตเป็น 1.4.0-alpha08 แล้ว ระบบจะย้ายอาร์ติแฟกต์ช่องมองภาพของ CameraX ไปยังกลุ่มไลบรารีของตัวเอง การเปลี่ยนแปลงนี้จำเป็นต่อการปรับปรุงความสามารถในการแยกส่วนและความสามารถในการบำรุงรักษาของไลบรารี CameraX
หากก่อนหน้านี้คุณใช้ androidx.camera:camera-viewfinder
, androidx.camera:camera-viewfinder-compose
หรือ androidx.camera:camera-viewfinder-core
คุณจะต้องเปลี่ยนการอ้างอิงเป็นรายการต่อไปนี้
androidx.camera:camera-viewfinder
->androidx.camera.viewfinder:viewfinder-view
androidx.camera:camera-viewfinder-compose
->androidx.camera.viewfinder:viewfinder-compose
androidx.camera:camera-viewfinder-core
->androidx.camera.viewfinder:viewfinder-core
คุณไม่จำเป็นต้องเปลี่ยนแปลงโค้ดใดๆ เพื่อทำการเปลี่ยนผ่านนี้ พิกัด Maven ของ Viewfinder เวอร์ชันเก่าจะไม่ได้รับการอัปเดตอีกต่อไป
นอกจากนี้ หากคุณใช้ Compose กับ CameraX ตอนนี้มีไลบรารีใหม่ที่ใช้ Compose เป็นอันดับแรกในเวอร์ชันอัลฟ่าแล้ว: androidx.camera:camera-compose
ซึ่งจะให้ CameraXViewfinder
ที่เป็น Viewfinder ที่เป็นสำนวนของ Compose ซึ่งปรับ SurfaceRequest
ของ CameraX ให้เข้ากับ Compose ในลักษณะเดียวกับที่ PreviewView
ทำงานกับ View