ไลบรารี 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 จะจัดการส่วนที่เหลือให้เอง
ความแตกต่างที่สำคัญ
- ไม่จำเป็นต้องแยกความแตกต่างระหว่างการเข้าอัตโนมัติและการเข้าแบบเดิมในฝั่งแอป
- อินเทอร์เฟซ Callback แบบรวม
- ตัวสร้าง
PictureInPictureParamsใหม่เพื่อความเข้ากันได้แบบย้อนหลัง
วิดีโอคอล
แอปจะแจ้งให้ไลบรารีทราบสถานะการใช้งานหรือไม่ใช้งานของการโทร และตั้งค่าอัตราส่วนกว้างยาว
ความแตกต่างที่สำคัญ
- ไม่จำเป็นต้องแยกความแตกต่างระหว่างการเข้าอัตโนมัติและการเข้าแบบเดิมในฝั่งแอป
- อินเทอร์เฟซ Callback แบบรวม
- ตัวสร้าง
PictureInPictureParamsใหม่เพื่อความเข้ากันได้แบบย้อนหลัง - ไอคอนการดำเนินการที่ได้มาตรฐานสำหรับวิดีโอคอล
การเล่นวิดีโอ
ไลบรารี Jetpack มีตัวแทนผู้เล่นที่คุณสามารถผสานรวมเพื่อจัดการการเปิดหรือปิดใช้ PiP และตั้งค่าคำแนะนำสี่เหลี่ยมผืนผ้าต้นทางได้อย่างถูกต้อง
นอกจากนี้ คุณยังเลือกใช้ชุดออบเจ็กต์ RemoteAction ที่กำหนดไว้ล่วงหน้า ซึ่งคล้ายกับออบเจ็กต์ที่ใช้ในสถานการณ์วิดีโอคอลได้ด้วย
ฟีเจอร์หลัก
- จัดการความเข้ากันได้แบบย้อนหลัง ไม่จำเป็นต้องตรวจสอบเวอร์ชันระบบปฏิบัติการ
- การซิงค์สถานะการเล่นและการควบคุมการเข้าอัตโนมัติ
- การติดตามรูปทรงเรขาคณิตอย่างต่อเนื่องโดยใช้
SourceRectHint