อุปกรณ์และกล้องแบบพับได้

หมายเหตุ: หน้านี้กล่าวถึงแพ็กเกจ Camera2 เราขอแนะนำให้ใช้ CameraX เว้นแต่ว่าแอปของคุณต้องใช้ฟีเจอร์ระดับต่ำที่เฉพาะเจาะจงจาก Camera2 ทั้ง CameraX และ Camera2 รองรับ Android 5.0 (API ระดับ 21) ขึ้นไป

นักพัฒนาแอปกล้องอาจพบปัญหาเฉพาะตัวเมื่อทำงานกับแอปพลิเคชันกล้องที่ทำงานในอุปกรณ์แบบพับได้ ซึ่งแตกต่างจากสมาร์ทโฟนที่มักจะมีการคาดเดาหลายประการเกี่ยวกับการวางแนวของจอแสดงผล การวางแนวของกล้อง และการหันกล้อง แต่อุปกรณ์แบบพับได้อาจมีรูปแบบของอุปกรณ์ เลย์เอาต์ของจอแสดงผล และชุดค่าผสมของกล้องที่หลากหลาย

โดยทั่วไปสมาร์ทโฟนจะมีกล้องที่มีการวางแนวแนวตั้งซึ่งตรงกับจอแสดงผล อย่างไรก็ตาม กรณีนี้อาจไม่ตรงกับบางสถานะแบบพับได้ หน้าจอแบบกางออกอาจมีเซ็นเซอร์ 1 ตัวที่วางแนวตั้งและอีก 1 ตัวที่วางแนวนอน

หากแอปพลิเคชันกล้องใช้ SurfaceTexture หรือไปป์ไลน์การแสดงผลที่กําหนดเอง โปรดคํานึงถึงการวางแนวเซ็นเซอร์กล้อง

วิธีนี้ช่วยให้มั่นใจได้ว่าเนื้อหาที่แสดงผลจะตั้งตรงเสมอและพิกเซลจะยังคงเป็นสี่เหลี่ยมจัตุรัส หลีกเลี่ยงการยืดในแนวนอนหรือแนวตั้ง

คู่มือนี้จะให้ข้อมูลเกี่ยวกับสิ่งที่นักพัฒนาแอป Camera2 ต้องพิจารณา และขั้นตอนในการปรับการแสดงผลตัวอย่างจากกล้องสำหรับสถานะต่างๆ ของอุปกรณ์แบบพับได้

การเปลี่ยนสถานะอุปกรณ์ส่งผลต่อกล้องอย่างไร

อุปกรณ์แบบพับได้อาจรวมถึงอุปกรณ์ต่อไปนี้

  • จอแสดงผลจริงอย่างน้อย 2 เครื่อง
  • อุปกรณ์กล้องจริงหลายเครื่อง

อุปกรณ์เหล่านี้อาจทำงานอยู่โดยขึ้นอยู่กับสถานะของอุปกรณ์ อุปกรณ์บางรุ่นใช้กล้องเชิงตรรกะซึ่งประกอบด้วยเซ็นเซอร์ทางกายภาพ 2 ตัวขึ้นไปเพื่อลดความซับซ้อนในการจัดการสถานะอุปกรณ์

หากนักพัฒนาแอปเปิดและเปิดใช้การสตรีมตัวอย่างในอุปกรณ์กล้องเสมือนจริงดังกล่าว กล้องจะสลับระหว่างอุปกรณ์จริงโดยอัตโนมัติเพื่อตอบสนองต่อสถานะการพับที่เฉพาะเจาะจง

ตัวอย่างเช่น ลองพิจารณาอุปกรณ์แบบพับได้ที่มีจอแสดงผล 2 จอ

  • หน้าจอแนวตั้งปกติในสถานะพับโดยมีกล้องหน้า "ด้านนอก" จริงในแนวตั้ง
  • หน้าจอแบบพับได้ซึ่งเปิดใช้อยู่ในสถานะกางออกโดยมีกล้องหน้า "ด้านใน" แบบใช้จริงซึ่งวางแนวนอนเมื่อเทียบกับจอแสดงผลที่กางออก

เมื่อผู้ใช้พับหรือกางอุปกรณ์ขณะที่แอปพลิเคชันสตรีมจากกล้องตรรกะด้านหน้า การติดตั้งใช้งานอุปกรณ์อาจสลับระหว่างเซ็นเซอร์ที่ติดตั้งภายนอกและภายในเพื่อตอบสนองต่อการเปลี่ยนสถานะอุปกรณ์แต่ละครั้ง

สวิตช์จอแสดงผลอาจกำหนดให้แอปพลิเคชันปรับ UI

นอกจากการปรับ UI แล้ว นักพัฒนาแอปอาจต้องพิจารณาปรับวิธีแสดงผลตัวอย่างจากกล้องโดยพิจารณาจากกล้องจริงที่ใช้งานอยู่

สวิตช์อุปกรณ์กล้องจริง

อินเทอร์เฟซอุปกรณ์กล้องเชิงตรรกะมี API ที่จําเป็นในการจัดการสวิตช์กล้องจริง นักพัฒนาแอปต้องตรวจสอบค่าของรหัสอุปกรณ์ที่ใช้งานอยู่

ในอุปกรณ์แบบพับได้ ผลการจับภาพบัตรประจำตัวที่ใช้งานอยู่อาจเปลี่ยนแปลงตามสถานะการพับที่แตกต่างกัน เช่น การพับและการกางออก

ในกรณีดังกล่าว นักพัฒนาแอปต้องใช้บัตรประจำตัวใบจริงที่ใช้งานอยู่ในปัจจุบันและตรวจสอบลักษณะกล้องที่เกี่ยวข้อง

ลักษณะที่สำคัญที่สุด 2 อย่างของกล้องที่อาจเปลี่ยนแปลงและส่งผลต่อการเรนเดอร์ตัวอย่างคือการวางแนวเซ็นเซอร์และทิศทางของเลนส์

หากไปป์ไลน์การแสดงผลตัวอย่างของแอปพลิเคชันใช้พารามิเตอร์กล้องแบบคงที่เพื่อคำนวณเมทริกซ์การเปลี่ยนรูปแบบสุดท้าย โปรดตรวจสอบว่าคุณส่งค่าปัจจุบันและอัปเดตการเปลี่ยนรูปแบบกราฟิก

หากต้องการทำความเข้าใจไปป์ไลน์การแสดงตัวอย่างจากกล้องและวิธีคำนวณการเปลี่ยนรูปแบบให้ดียิ่งขึ้น โปรดดูคู่มือการแสดงตัวอย่างจากกล้อง

สมมติฐานที่ไม่ถูกต้องเพิ่มเติม

เราไม่แนะนําให้แคชค่าลักษณะของกล้อง

คุณไม่สามารถคาดการณ์ว่าลักษณะของกล้องจะคงที่ เนื่องจากลักษณะอาจเปลี่ยนแปลงเมื่ออุปกรณ์พับหรือกางออก คุณจึงไม่ควรจัดเก็บและใช้ลักษณะของกล้องซ้ำ แต่ให้ตรวจสอบลักษณะของกล้องแต่ละครั้งแทน

พิจารณากรณีที่แอปพลิเคชันกล้องเริ่มทำงานบนจอแสดงผลด้านหน้าด้านนอกและแคชลักษณะของกล้องหน้าและกล้องหลังปัจจุบัน หากแอปพลิเคชันเริ่มทำงานอีกครั้งบนจอแสดงผลด้านใน เซ็นเซอร์ด้านหน้าที่ทำงานอยู่อาจอยู่ในแนวอื่น ซึ่งอาจทำให้เกิดผลข้างเคียงในการแสดงตัวอย่างที่ไม่ต้องการ