เริ่มตั้งแต่ Android 8.0 (API ระดับ 26) เป็นต้นไป Android จะอนุญาตให้เปิดกิจกรรมใน โหมดการแสดงภาพซ้อนภาพ (PIP) PIP คือโหมดหลายหน้าต่างชนิดพิเศษซึ่งส่วนใหญ่ ที่ใช้สำหรับการเล่นวิดีโอ ช่วยให้ผู้ใช้ดูวิดีโอในหน้าต่างขนาดเล็กที่ปักหมุดไว้ได้ ที่มุมของหน้าจอขณะไปยังแอปต่างๆ หรือเรียกดูเนื้อหาบน หน้าจอหลัก
PIP ใช้ประโยชน์จาก API หลายหน้าต่างที่มีให้ใช้งานใน Android 7.0 เพื่อให้บริการ หน้าต่างวางซ้อนวิดีโอที่ปักหมุดไว้ หากต้องการเพิ่ม PIP ลงในแอป คุณจะต้องลงทะเบียน กิจกรรมที่รองรับ PIP, เปลี่ยนกิจกรรมเป็นโหมด PIP ตามความจำเป็น และ ตรวจสอบว่าองค์ประกอบ UI ซ่อนอยู่และเล่นวิดีโอต่อได้เมื่อกิจกรรม อยู่ในโหมด PIP
หน้าต่าง PIP จะปรากฏขึ้นในเลเยอร์บนสุดของหน้าจอ ในมุมที่เลือกโดย ระบบ
PIP ยังใช้งานได้ในอุปกรณ์ Android TV OS ที่เข้ากันได้ซึ่งใช้ Android 14 (API ระดับ 34) ขึ้นไป แม้ว่าจะมีความคล้ายคลึงกันมากมาย แต่ก็มี ข้อพิจารณาเพิ่มเติมเมื่อใช้ PIP บนทีวี
วิธีที่ผู้ใช้โต้ตอบกับหน้าต่าง PIP
ผู้ใช้ลากหน้าต่าง PIP ไปยังตำแหน่งอื่นได้ ตั้งแต่ Android 12 เป็นต้นไป ผู้ใช้ และดำเนินการต่อไปนี้ได้ด้วย
แตะครั้งเดียวที่หน้าต่างเพื่อแสดงการเปิด/ปิดโหมดเต็มหน้าจอ ปุ่มปิด ปุ่มการตั้งค่าและการดำเนินการที่กำหนดเองซึ่งแอปของคุณสร้างขึ้น (เช่น เล่น )
แตะสองครั้งที่หน้าต่างเพื่อสลับระหว่างขนาด PIP ปัจจุบันและขนาดสูงสุด หรือขนาด PIP ขั้นต่ำ เช่น การแตะสองครั้งที่หน้าต่างที่ขยายใหญ่สุด ย่อขนาดลง และผลสนทนาก็เป็นจริงเช่นกัน
ซ่อนหน้าต่างไว้โดยลากไปที่ขอบด้านซ้ายหรือขวา วิธียกเลิกการซ่อน ให้แตะส่วนที่มองเห็นได้ของหน้าต่างที่ซ่อน หรือลากออก
ปรับขนาดหน้าต่าง PIP โดยใช้การบีบเพื่อซูม
แอปของคุณจะควบคุมเมื่อกิจกรรมปัจจุบันเข้าสู่โหมด PIP นี่คือบางส่วน ตัวอย่าง:
กิจกรรมจะเข้าสู่โหมด PIP ได้เมื่อผู้ใช้แตะปุ่มหน้าแรกหรือปัด จนถึงบ้าน นี่เป็นวิธีที่ Google Maps จะแสดงเส้นทางต่อไปในขณะที่ ผู้ใช้ทำกิจกรรมอื่นไปด้วย
แอปของคุณสามารถย้ายวิดีโอเข้าสู่โหมด PIP เมื่อผู้ใช้ย้อนกลับจาก ดูวิดีโอเพื่อเรียกดูเนื้อหาอื่น
แอปของคุณเปลี่ยนวิดีโอเป็นโหมด PIP ได้ในขณะที่ผู้ใช้ดูตอนท้าย ตอนของเนื้อหา หน้าจอหลักจะแสดงโปรโมชันหรือข้อมูลสรุป เกี่ยวกับตอนถัดไปในซีรีส์
แอปของคุณสามารถช่วยให้ผู้ใช้จัดคิวเนื้อหาเพิ่มเติม พวกเขาดูวิดีโอ วิดีโอจะเล่นต่อในโหมด PIP โดยที่ หน้าจอจะแสดงกิจกรรมการเลือกเนื้อหา
ประกาศการรองรับ PIP
โดยค่าเริ่มต้น ระบบจะไม่รองรับ PIP สำหรับแอปโดยอัตโนมัติ หากคุณต้องการ
รองรับ PIP ในแอป ลงทะเบียนกิจกรรมวิดีโอในไฟล์ Manifest โดย
กำลังตั้งค่า android:supportsPictureInPicture
เป็น true
นอกจากนี้ ให้ระบุ
กิจกรรมจะจัดการการเปลี่ยนแปลงการกำหนดค่าเลย์เอาต์เพื่อให้กิจกรรมของคุณไม่
เปิดขึ้นอีกครั้งเมื่อเลย์เอาต์เกิดขึ้นในระหว่างการเปลี่ยนโหมด PIP
<activity android:name="VideoActivity"
android:supportsPictureInPicture="true"
android:configChanges=
"screenSize|smallestScreenSize|screenLayout|orientation"
...
เปลี่ยนกิจกรรมเป็น PIP
ใน Android 12 เป็นต้นไป คุณสามารถเปลี่ยนกิจกรรมเป็นโหมด PIP ได้โดยการตั้งค่า
ธง setAutoEnterEnabled
เป็น true
เมื่อใช้การตั้งค่านี้ กิจกรรม
เปลี่ยนเป็นโหมด PIP โดยอัตโนมัติตามที่จำเป็นโดยไม่ต้องเรียกใช้อย่างชัดเจน
enterPictureInPictureMode()
ใน onUserLeaveHint
และนี่คือ
ข้อดีอีกประการคือช่วยให้การเปลี่ยนราบรื่นขึ้น โปรดดูรายละเอียดที่หัวข้อสร้าง
เปลี่ยนเป็นโหมด PIP ได้อย่างราบรื่นขึ้นจากการนำทางด้วยท่าทางสัมผัส
หากคุณกําหนดเป้าหมายเป็น Android 11 หรือต่ำกว่า กิจกรรมจะต้องเรียกใช้
enterPictureInPictureMode()
เพื่อเปลี่ยนเป็นโหมด PIP ตัวอย่างเช่น โค้ดต่อไปนี้จะเปลี่ยนกิจกรรมเป็น
โหมด PIP เมื่อผู้ใช้คลิกปุ่มเฉพาะใน UI ของแอป
Kotlin
override fun onActionClicked(action: Action) { if (action.id.toInt() == R.id.lb_control_picture_in_picture) { activity?.enterPictureInPictureMode() return } }
Java
@Override public void onActionClicked(Action action) { if (action.getId() == R.id.lb_control_picture_in_picture) { getActivity().enterPictureInPictureMode(); return; } ... }
คุณอาจต้องการรวมตรรกะที่เปลี่ยนกิจกรรมเป็นโหมด PIP แทน
ในการก้าวเข้าสู่พื้นหลัง ตัวอย่างเช่น Google Maps จะเปลี่ยนเป็นโหมด PIP หาก
ผู้ใช้กดปุ่มหน้าแรกหรือปุ่มล่าสุดขณะแอปนำทาง คุณสามารถ
ตรวจจับกรณีนี้โดยการลบล้าง
onUserLeaveHint()
:
Kotlin
override fun onUserLeaveHint() { if (iWantToBeInPipModeNow()) { enterPictureInPictureMode() } }
Java
@Override public void onUserLeaveHint () { if (iWantToBeInPipModeNow()) { enterPictureInPictureMode(); } }
แนะนำ: มอบประสบการณ์การเปลี่ยน PIP ที่สมบูรณ์แบบให้แก่ผู้ใช้
Android 12 เพิ่มการปรับปรุงรูปลักษณ์ภายนอกให้กับการเปลี่ยนแบบภาพเคลื่อนไหวได้อย่างมาก ระหว่างหน้าต่างเต็มหน้าจอและ PIP เราขอแนะนำอย่างยิ่งให้คุณปรับใช้ การเปลี่ยนแปลงที่เกี่ยวข้อง เมื่อดำเนินการแล้ว การเปลี่ยนแปลงเหล่านี้จะปรับขนาดโดยอัตโนมัติเป็น หน้าจอขนาดใหญ่ เช่น อุปกรณ์แบบพับได้และแท็บเล็ตโดยที่คุณไม่ต้องดำเนินการใดๆ เพิ่มเติม
หากแอปไม่มีการอัปเดตที่เกี่ยวข้อง การเปลี่ยน PIP จะยังคง ใช้งานได้ แต่ภาพเคลื่อนไหวไม่ค่อยเรียบร้อย ตัวอย่างเช่น การเปลี่ยน จากโหมดเต็มหน้าจอเป็นโหมด PIP อาจทำให้หน้าต่าง PIP หายไปในระหว่าง ก่อนที่จะปรากฏอีกครั้งเมื่อการเปลี่ยนเสร็จสมบูรณ์
การเปลี่ยนแปลงเหล่านี้เกี่ยวข้องกับสิ่งต่อไปนี้
- การเปลี่ยนไปใช้โหมด PIP ราบรื่นยิ่งขึ้นจากการนำทางด้วยท่าทางสัมผัส
- การตั้งค่า
sourceRectHint
ที่เหมาะสมสำหรับการเข้าและออกจากโหมด PIP - การปิดใช้การปรับขนาดเนื้อหาที่ไม่ใช่วิดีโออย่างราบรื่น
โปรดดู Android ตัวอย่าง Kotlin PictureInPicture เป็นข้อมูลอ้างอิงที่ช่วยให้ได้รับประสบการณ์การเปลี่ยนที่ราบรื่น
เปลี่ยนเป็นโหมด PIP ได้อย่างราบรื่นยิ่งขึ้นจากการนำทางด้วยท่าทางสัมผัส
ตั้งแต่ Android 12 เป็นต้นไป Flag setAutoEnterEnabled
จะให้ข้อมูลต่อไปนี้
ภาพเคลื่อนไหวที่ราบรื่นขึ้นสำหรับการเปลี่ยนเป็นเนื้อหาวิดีโอในโหมด PIP โดยใช้ท่าทางสัมผัส
การนำทาง เช่น เมื่อปัดขึ้นจากโหมดเต็มหน้าจอเพื่อกลับไปหน้าแรก
ทำตามขั้นตอนต่อไปนี้เพื่อทำการเปลี่ยนแปลงและดูตัวอย่างนี้สำหรับ การอ้างอิง:
ใช้
setAutoEnterEnabled
เพื่อสร้างPictureInPictureParams.Builder
:Kotlin
setPictureInPictureParams(PictureInPictureParams.Builder() .setAspectRatio(aspectRatio) .setSourceRectHint(sourceRectHint) .setAutoEnterEnabled(true) .build())
Java
setPictureInPictureParams(new PictureInPictureParams.Builder() .setAspectRatio(aspectRatio) .setSourceRectHint(sourceRectHint) .setAutoEnterEnabled(true) .build());
โทรติดต่อ
setPictureInPictureParams
เพื่อรับข้อมูลล่าสุด ก่อนเวลาPictureInPictureParams
แอปไม่ต้องรอให้onUserLeaveHint
Callback (อย่างที่ควรจะเป็นใน Android 11)ตัวอย่างเช่น คุณอาจต้องการโทรหา
setPictureInPictureParams
ใน เล่นครั้งแรกและการเล่นต่อไปนี้ หากสัดส่วนการแสดงผลมีการเปลี่ยนแปลงโทรหา
setAutoEnterEnabled(false)
แต่เมื่อจำเป็นเท่านั้น ตัวอย่างเช่น คุณอาจไม่ต้องการป้อน PIP หากการเล่นปัจจุบันอยู่ในโหมดหยุดชั่วคราว
ตั้งค่า sourceRectHint
ที่เหมาะสมสำหรับการเข้าและออกจากโหมด PIP
เริ่มต้นด้วยการเปิดตัว PIP ใน Android 8.0 setSourceRectHint
ระบุขอบเขตของกิจกรรมที่มองเห็นได้หลังจากการเปลี่ยนเข้าสู่
การแสดงภาพซ้อนภาพ เช่น ขอบเขตการดูวิดีโอในวิดีโอเพลเยอร์
เมื่อใช้ Android 12 ระบบจะใช้ sourceRectHint
เพื่อให้ติดตั้งใช้งานได้อย่างราบรื่นขึ้นมาก
ภาพเคลื่อนไหวทั้งเมื่อเข้าและออกจากโหมด PIP
หากต้องการตั้งค่า sourceRectHint
ให้เข้าและออกจากโหมด PIP อย่างถูกต้อง ให้ทำดังนี้
สร้าง
PictureInPictureParams
โดยใช้ขอบเขตที่เหมาะสมเป็นsourceRectHint
เราขอแนะนำให้แนบไฟล์ ตัวฟังการเปลี่ยนเลย์เอาต์ของโปรแกรมเล่นวิดีโอ:Kotlin
val mOnLayoutChangeListener = OnLayoutChangeListener { v: View?, oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int, newLeft: Int, newTop: Int, newRight: Int, newBottom: Int -> val sourceRectHint = Rect() mYourVideoView.getGlobalVisibleRect(sourceRectHint) val builder = PictureInPictureParams.Builder() .setSourceRectHint(sourceRectHint) setPictureInPictureParams(builder.build()) } mYourVideoView.addOnLayoutChangeListener(mOnLayoutChangeListener)
Java
private final View.OnLayoutChangeListener mOnLayoutChangeListener = (v, oldLeft, oldTop, oldRight, oldBottom, newLeft, newTop, newRight, newBottom) -> { final Rect sourceRectHint = new Rect(); mYourVideoView.getGlobalVisibleRect(sourceRectHint); final PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder() .setSourceRectHint(sourceRectHint); setPictureInPictureParams(builder.build()); }; mYourVideoView.addOnLayoutChangeListener(mOnLayoutChangeListener);
หากจำเป็น ให้อัปเดต
sourceRectHint
ก่อนที่ระบบจะเริ่มทำงาน ออกจากการเปลี่ยน เมื่อระบบกำลังจะออกจากโหมด PIP กิจกรรม ลำดับชั้นการแสดงผลจะวางตามการกำหนดค่าปลายทาง (เช่น เต็มหน้าจอ) แอปสามารถแนบ Listener การเปลี่ยนเลย์เอาต์เข้ากับมุมมองรูทได้ หรือมุมมองเป้าหมาย (เช่น มุมมองโปรแกรมเล่นวิดีโอ) เพื่อตรวจหาเหตุการณ์และ อัปเดตsourceRectHint
ก่อนที่ภาพเคลื่อนไหวจะเริ่มเล่นKotlin
// Listener is called immediately after the user exits PiP but before animating. playerView.addOnLayoutChangeListener { _, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom -> if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) { // The playerView's bounds changed, update the source hint rect to // reflect its new bounds. val sourceRectHint = Rect() playerView.getGlobalVisibleRect(sourceRectHint) setPictureInPictureParams( PictureInPictureParams.Builder() .setSourceRectHint(sourceRectHint) .build() ) } }
Java
// Listener is called right after the user exits PiP but before // animating. playerView.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { if (left != oldLeft || right != oldRight || top != oldTop || bottom != oldBottom) { // The playerView's bounds changed, update the source hint rect to // reflect its new bounds. final Rect sourceRectHint = new Rect(); playerView.getGlobalVisibleRect(sourceRectHint); setPictureInPictureParams( new PictureInPictureParams.Builder() .setSourceRectHint(sourceRectHint) .build()); } });
ปิดใช้การปรับขนาดเนื้อหาที่ไม่ใช่วิดีโออย่างราบรื่น
Android 12 เพิ่ม Flag setSeamlessResizeEnabled
ซึ่งมี
ภาพเคลื่อนไหวแบบครอสเฟดราบรื่นยิ่งขึ้นเมื่อปรับขนาดเนื้อหาที่ไม่ใช่วิดีโอใน PIP
ก่อนหน้านี้ การปรับขนาดเนื้อหาที่ไม่ใช่วิดีโอในหน้าต่าง PIP สามารถสร้าง
ที่น่าตกใจ
หากต้องการปิดใช้การปรับขนาดเนื้อหาที่ไม่ใช่วิดีโออย่างราบรื่น ให้ทำดังนี้
Kotlin
setPictureInPictureParams(PictureInPictureParams.Builder() .setSeamlessResizeEnabled(false) .build())
Java
setPictureInPictureParams(new PictureInPictureParams.Builder() .setSeamlessResizeEnabled(false) .build());
จัดการ UI ระหว่าง PIP
เมื่อกิจกรรมเข้าหรือออกจากโหมด PIP ระบบจะเรียกใช้
Activity.onPictureInPictureModeChanged()
หรือ
Fragment.onPictureInPictureModeChanged()
คุณควรลบล้าง Callback เหล่านี้เพื่อวาดองค์ประกอบ UI ของกิจกรรมอีกครั้ง เก็บ โปรดทราบว่าในโหมด PIP กิจกรรมจะแสดงในหน้าต่างขนาดเล็ก ผู้ใช้ไม่สามารถ โต้ตอบกับองค์ประกอบ UI ของแอปเมื่ออยู่ในโหมด PIP และรายละเอียดของ องค์ประกอบ UI ขนาดเล็กอาจมองเห็นได้ยาก กิจกรรมการเล่นวิดีโอกับ UI ขนาดเล็กให้ประสบการณ์ของผู้ใช้ที่ดีที่สุด
หากแอปของคุณต้องมีการดำเนินการที่กำหนดเองสำหรับ PIP โปรดดูเพิ่ม ในหน้านี้ นำองค์ประกอบ UI อื่นๆ ออกก่อน กิจกรรมจะเข้าสู่ PIP และคืนค่าข้อมูลเมื่อกิจกรรมของคุณกลายเป็นแบบเต็มหน้าจอ อีกครั้ง:
Kotlin
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration) { if (isInPictureInPictureMode) { // Hide the full-screen UI (controls, etc.) while in PiP mode. } else { // Restore the full-screen UI. } }
Java
@Override public void onPictureInPictureModeChanged (boolean isInPictureInPictureMode, Configuration newConfig) { if (isInPictureInPictureMode) { // Hide the full-screen UI (controls, etc.) while in PiP mode. } else { // Restore the full-screen UI. ... } }
เพิ่มตัวควบคุม
หน้าต่าง PIP จะแสดงตัวควบคุมเมื่อผู้ใช้เปิดเมนูของหน้าต่าง (โดย แตะหน้าต่างในอุปกรณ์เคลื่อนที่ หรือเลือกเมนูจากทีวี ระยะไกล)
หากแอปมีสื่อที่ใช้งานอยู่ เซสชัน จากนั้นเล่น หยุดชั่วคราว ถัดไป และก่อนหน้า จะปรากฏขึ้น
คุณยังสามารถระบุการทำงานที่กำหนดเองโดยชัดแจ้งได้ด้วยการสร้าง
PictureInPictureParams
กับ
PictureInPictureParams.Builder.setActions()
ก่อนเข้าสู่โหมด PIP และส่งพารามิเตอร์เมื่อคุณเข้าสู่โหมด PIP โดยใช้
enterPictureInPictureMode(android.app.PictureInPictureParams)
หรือ
setPictureInPictureParams(android.app.PictureInPictureParams)
โปรดระมัดระวัง หากคุณพยายามเพิ่มจำนวน
getMaxNumPictureInPictureActions()
ก็จะแสดงเพียงจำนวนสูงสุดเท่านั้น
เล่นวิดีโอต่อขณะที่อยู่ใน PIP
เมื่อกิจกรรมของคุณเปลี่ยนเป็น PIP ระบบจะวางกิจกรรมไว้ในช่วง "หยุดชั่วคราว"
และเรียกใช้
onPause()
วิดีโอ
ไม่ควรหยุดเล่นชั่วคราวและเล่นต่อไปแทนหากกิจกรรมนั้น
หยุดชั่วคราวขณะเปลี่ยนเป็นโหมด PIP
ใน Android 7.0 ขึ้นไป คุณควรหยุดวิดีโอชั่วคราวและเล่นวิดีโอต่อเมื่อ
ระบบจะเรียกใช้
onStop()
และ
onStart()
วิธีการนี้
เพื่อให้ไม่ต้องตรวจสอบว่าแอปอยู่ในโหมด PIP ใน onPause()
หรือไม่ และ
เล่นต่ออย่างชัดเจน
หากยังไม่ได้ตั้งค่าแฟล็ก setAutoEnterEnabled
เป็น true
และคุณจะต้องทำดังนี้
หยุดการเล่นชั่วคราวในการใช้งาน onPause()
ตรวจสอบโหมด PIP โดยการเรียกใช้
isInPictureInPictureMode()
และจัดการการเล่นอย่างเหมาะสม เช่น
Kotlin
override fun onPause() { super.onPause() // If called while in PiP mode, do not pause playback if (isInPictureInPictureMode) { // Continue playback } else { // Use existing playback logic for paused Activity behavior. } }
Java
@Override public void onPause() { // If called while in PiP mode, do not pause playback if (isInPictureInPictureMode()) { // Continue playback ... } else { // Use existing playback logic for paused Activity behavior. ... } }
เมื่อกิจกรรมของคุณออกจากโหมด PIP กลับไปเป็นโหมดเต็มหน้าจอ ระบบจะ
ดำเนินกิจกรรมต่อและเรียก
onResume()
ใช้กิจกรรมการเล่นรายการเดียวสำหรับ PIP
ในแอปของคุณ ผู้ใช้อาจเลือกวิดีโอใหม่เมื่อเรียกดูเนื้อหาบน ขณะที่กิจกรรมการเล่นวิดีโออยู่ในโหมด PIP เล่นวิดีโอใหม่ ในกิจกรรมการเล่นที่มีอยู่ในโหมดเต็มหน้าจอ แทนที่จะเปิด กิจกรรมใหม่ที่อาจทำให้ผู้ใช้สับสน
เพื่อให้แน่ใจว่ามีการใช้กิจกรรมเดียวสำหรับคำขอเล่นวิดีโอและสลับ
เข้าหรือออกจากโหมด PIP ตามความจำเป็น ให้ตั้งค่า android:launchMode
ของกิจกรรมเป็น
singleTask
ในไฟล์ Manifest ของคุณ:
<activity android:name="VideoActivity"
...
android:supportsPictureInPicture="true"
android:launchMode="singleTask"
...
ในกิจกรรม ให้ลบล้าง
onNewIntent()
และจัดการวิดีโอใหม่ รวมถึงหยุดเล่นวิดีโอที่มีอยู่ หากจำเป็น
แนวทางปฏิบัติแนะนำ
PIP อาจถูกปิดใช้ในอุปกรณ์ที่มี RAM ต่ำ ก่อนที่แอปจะใช้ PIP
ตรวจสอบว่าพร้อมให้บริการด้วยการโทร
hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
PIP มีไว้สำหรับกิจกรรมที่เล่นวิดีโอแบบเต็มหน้าจอ เมื่อเปลี่ยน กิจกรรมในโหมด PIP เพื่อไม่ให้แสดงเนื้อหาได้ยกเว้นเนื้อหาวิดีโอ ติดตามเมื่อ กิจกรรมของคุณเข้าสู่โหมด PIP และซ่อนองค์ประกอบ UI ตามที่อธิบายไว้ใน การจัดการ UI ระหว่าง PIP
เมื่อกิจกรรมอยู่ในโหมด PIP กิจกรรมจะไม่โฟกัสอินพุตโดยค่าเริ่มต้น ถึง
รับเหตุการณ์การป้อนข้อมูลขณะอยู่ในโหมด PIP ให้ใช้
MediaSession.setCallback()
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ setCallback()
ได้ที่แสดง "กำลังเล่น"
การ์ด
เมื่อแอปอยู่ในโหมด PIP การเล่นวิดีโอในหน้าต่าง PIP อาจทำให้เกิดเสียง การรบกวนแอปอื่น เช่น แอปโปรแกรมเล่นเพลงหรือแอปค้นหาด้วยเสียง เพื่อหลีกเลี่ยงปัญหานี้ ให้ขอโฟกัสเสียงเมื่อคุณเริ่มเล่นวิดีโอและแฮนเดิล การแจ้งเตือนการเปลี่ยนแปลงโฟกัสเสียง ตามที่อธิบายไว้ใน การจัดการเสียง โฟกัส หากคุณได้รับการแจ้งเตือน ของการสูญเสียโฟกัสของเสียงเมื่ออยู่ในโหมด PIP ให้หยุดเล่นวิดีโอชั่วคราวหรือหยุดเล่นวิดีโอ
เมื่อแอปกำลังจะเข้าสู่ PIP โปรดสังเกตเฉพาะกิจกรรมยอดนิยมที่ป้อน
การแสดงภาพซ้อนภาพ ในบางสถานการณ์ เช่น บนอุปกรณ์หลายหน้าต่าง
หากเป็นไปได้ กิจกรรมด้านล่างจะแสดงขึ้นและปรากฏให้เห็นอีกครั้ง
กิจกรรม PIP คุณควรจัดการเคสนี้อย่างเหมาะสม รวมถึง
กิจกรรมด้านล่างที่ได้รับการติดต่อกลับจาก onResume()
หรือ onPause()
และยัง
เป็นไปได้ที่ผู้ใช้อาจโต้ตอบกับกิจกรรม ตัวอย่างเช่น หากคุณมี
กิจกรรมรายการวิดีโอที่แสดง และกิจกรรมการเล่นวิดีโอในโหมด PIP
ผู้ใช้อาจเลือกวิดีโอใหม่จากรายการและกิจกรรม PIP ควรอัปเดต
ตามนั้น
โค้ดตัวอย่างเพิ่มเติม
หากต้องการดาวน์โหลดแอปตัวอย่างที่เขียนด้วย Kotlin โปรดดูตัวอย่าง Android PictureInPicture (Kotlin)