ใช้ไลบรารีการแสดงภาพซ้อนภาพของ Jetpack

ไลบรารี Picture-in-Picture (PiP) ของ Jetpack เป็นโซลูชันที่มีประสิทธิภาพและคล่องตัว สำหรับนักพัฒนาแอป Android ในการใช้ฟังก์ชัน PiP โดยเฉพาะอย่างยิ่ง สำหรับแอปการเล่นสื่อ แอปการสื่อสารผ่านวิดีโอ และแอปการนำทาง ไลบรารีนี้ช่วยลดโค้ด Boilerplate ข้อบกพร่องทั่วไปในแอป และปรับปรุงคุณภาพโดยรวมของประสบการณ์ของผู้ใช้ PiP ด้วยการมอบ API ที่รวมเป็นหนึ่งเดียว

ไลบรารี PiP ของ Jetpack ช่วยให้ API ของ PiP ที่มีอยู่ใช้งานได้ง่ายขึ้นด้วยการแก้ไขปัญหาและความไม่สอดคล้องกันที่สำคัญหลายประการในระบบนิเวศของ Android ดังนี้

  • การแยกส่วนของระบบปฏิบัติการ: ไลบรารีจะจัดการความแตกต่างในการเรียก API ของ PiP ใน Android เวอร์ชันต่างๆ โดยอัตโนมัติ เช่น การใช้ enterPictureInPictureMode ก่อน Android 12 และ isAutoEnterEnabled หลังจากนั้น เพื่อให้นักพัฒนาแอปไม่ต้องจัดการความแตกต่างของเวอร์ชัน
  • พารามิเตอร์ PiP ไม่ถูกต้อง: ไลบรารีนี้มีโซลูชันแบบรวมสำหรับการตั้งค่าพารามิเตอร์ PiP อย่างถูกต้อง เช่น setSourceRectHint เพื่อสร้างภาพเคลื่อนไหวที่ราบรื่น และมีคุณภาพสูงระหว่างการเล่นสื่อ
  • Callback สถานะ PiP แบบรวม: ไลบรารีนี้รวม onPictureInPictureModeChanged และ onPictureInPictureUiStateChanged ไว้ใน อินเทอร์เฟซ Callback แบบรวมเดียว (PictureInPictureDelegate.OnPictureInPictureEventListener) เพื่อให้การจัดการ สถานะและ UI ง่ายขึ้น
  • การลดโค้ด Boilerplate: ไลบรารีนี้ช่วยลดจำนวนโค้ด Boilerplate ที่ต้องใช้ซ้ำๆ ด้วยการนำเสนอชุด RemoteActions ที่กำหนดไว้ล่วงหน้าสำหรับ Use Case ทั่วไป เช่น ตัวควบคุมการเล่นและการดำเนินการวิดีโอคอล
  • การเตรียมพร้อมสำหรับอนาคต: ฟีเจอร์ PiP เพิ่มเติมจะให้บริการผ่านไลบรารี Jetpack ซึ่งช่วยให้ผู้ใช้เข้าถึงฟังก์ชันการทำงานเพิ่มเติมได้โดยใช้ความพยายามเพียงเล็กน้อยหรือไม่ต้องใช้ความพยายามเลย

ปรับใช้ Jetpack

หากต้องการปรับใช้ไลบรารี Jetpack ให้แทนที่การติดตั้งใช้งาน PiP แบบกำหนดเองที่มีอยู่ด้วย API ของไลบรารี Jetpack ความซับซ้อนและค่าใช้จ่ายในการปรับใช้จะแตกต่างกันไปตามการติดตั้งใช้งานปัจจุบันของแอป

ส่วนต่อไปนี้อธิบายกรณีการใช้งาน PiP ทั่วไปและขั้นตอนการติดตั้งใช้งานที่จำเป็น

แอปจะแจ้งให้ไลบรารีทราบสถานะการใช้งานหรือไม่ใช้งานของการนำทาง และตั้งค่าอัตราส่วนกว้างยาว จากนั้นไลบรารี Jetpack จะจัดการส่วนที่เหลือให้เอง

ความแตกต่างที่สำคัญ

  1. ไม่จำเป็นต้องแยกความแตกต่างระหว่างการเข้าอัตโนมัติและการเข้าแบบเดิมในฝั่งแอป
  2. อินเทอร์เฟซ Callback แบบรวม
  3. ตัวสร้าง PictureInPictureParams ใหม่เพื่อความเข้ากันได้แบบย้อนหลัง

วิดีโอคอล

แอปจะแจ้งให้ไลบรารีทราบสถานะการใช้งานหรือไม่ใช้งานของการโทร และตั้งค่าอัตราส่วนกว้างยาว

ความแตกต่างที่สำคัญ

  1. ไม่จำเป็นต้องแยกความแตกต่างระหว่างการเข้าอัตโนมัติและการเข้าแบบเดิมในฝั่งแอป
  2. อินเทอร์เฟซ Callback แบบรวม
  3. ตัวสร้าง PictureInPictureParams ใหม่เพื่อความเข้ากันได้แบบย้อนหลัง
  4. ไอคอนการดำเนินการที่ได้มาตรฐานสำหรับวิดีโอคอล

การเล่นวิดีโอ

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

ฟีเจอร์หลัก

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