
ในช่วงไม่กี่ปีที่ผ่านมา Android ได้พัฒนาอย่างมากในด้านการจัดการไฟล์และความปลอดภัยของระบบ หนึ่งในองค์ประกอบที่อธิบายได้น้อยที่สุด แต่มีความสำคัญอย่างยิ่งต่อการจัดเก็บข้อมูลที่เหมาะสมและความเป็นส่วนตัวของผู้ใช้ คือ โมดูล MediaProvider ที่รู้จักกันดี หากคุณเคยสงสัยว่าส่วนประกอบนี้คืออะไร ทำไมบางครั้งจึงปรากฏในข้อความระบบ มีการปรับปรุงอะไรบ้างในแต่ละเวอร์ชันของ Android หรือส่งผลต่อโทรศัพท์ของคุณอย่างไร เราจะอธิบายรายละเอียดในที่นี้
คุณอาจเจอชื่อ MediaProvider ได้ง่ายๆ ขณะใช้งานตั้งค่าโทรศัพท์ ตรวจสอบการใช้งานพื้นที่จัดเก็บ หรือค้นหาข้อมูลในฟอรัมทางเทคนิค แต่คนส่วนใหญ่ไม่แน่ใจนักว่ามันทำอะไร หรือทำไมมันถึงจำเป็นสำหรับแอปต่างๆ เช่น แอปแกลเลอรี่รูปภาพ แอปเล่นเพลง และแอปจัดการไฟล์ เพื่อให้ทำงานได้อย่างราบรื่นมาดูกันให้ละเอียดขึ้น เพื่อให้คุณเข้าใจบทบาทของมันในประสบการณ์การใช้งาน Android ในชีวิตประจำวันของคุณ ไม่ว่าคุณจะต้องการทำความเข้าใจโทรศัพท์ของคุณให้ดีขึ้น หรือต้องการพัฒนาแอปหรือ ROM แบบกำหนดเองก็ตาม
MediaProvider คืออะไรและมีฟังก์ชั่นอะไรใน Android?
El โมดูล MediaProvider เป็นหนึ่งในส่วนประกอบภายในของระบบแอนดรอยด์ที่มีหน้าที่รับผิดชอบในเรื่องต่อไปนี้ จัดการ จัดทำดัชนี และให้สิทธิ์การเข้าถึงไฟล์มัลติมีเดีย เช่น รูปภาพ วิดีโอ และเพลงที่จัดเก็บไว้ทั้งในหน่วยความจำภายในและอุปกรณ์ภายนอก (การ์ด SD, ไดรฟ์ USB ฯลฯ) มันไม่ใช่แอปธรรมดา แต่เป็น... ผู้ให้บริการเนื้อหาระบบ ซึ่งอาศัยฐานข้อมูลสาธารณะ MediaStore เพื่อให้แอปพลิเคชันอื่นๆ สามารถเข้าถึงเนื้อหามัลติมีเดียได้อย่างรวดเร็วและปลอดภัย
หน้าที่หลักของโปรแกรมนี้คือการวิเคราะห์ไฟล์ ดึงข้อมูลเมตา และจัดทำดัชนีในตารางที่เหมาะสม ข้อมูลเมตานี้ประกอบด้วยองค์ประกอบต่างๆ เช่น ประเภทไฟล์ ระยะเวลาของวิดีโอหรือเสียง ความละเอียดของภาพ วันที่บันทึก ขนาด ตำแหน่งจัดเก็บ และในบางกรณีข้อมูล EXIF ขั้นสูงสำหรับภาพถ่าย
ด้วยโมดูลนี้แอปต่างๆ สามารถแสดงคลังภาพทั้งหมดของคุณได้โดยไม่ต้องสแกนโครงสร้างโฟลเดอร์ทั้งหมดด้วยตนเองตัวอย่างเช่น แอปแกลเลอรี่รูปภาพไม่จำเป็นต้องสแกนทุกไดเร็กทอรี: มันส่งคำขอไปยัง MediaStore และในเวลาเพียงไม่กี่มิลลิวินาทีก็จะได้รับรายการรูปภาพทั้งหมดแบบแบ่งหน้า จัดเรียงและกรองตามต้องการ ซึ่งช่วยเพิ่มประสิทธิภาพและประหยัดแบตเตอรี่ได้อย่างมากเมื่อเทียบกับการสแกนระบบไฟล์โดยตรง
MediaProvider ยังทำงานร่วมกับ โมเดล การจัดเก็บข้อมูลแบบจำกัดขอบเขต (scoped storage model ) ในทางปฏิบัติ หมายความว่าโมดูลนี้บังคับใช้กฎความปลอดภัยเพื่อควบคุมว่าแอปใดบ้างที่สามารถดูและแก้ไขไฟล์เฉพาะได้ ตัวอย่างเช่นมันจะซ่อนหรือแก้ไขข้อมูลเมตาที่ละเอียดอ่อนเช่น ตำแหน่งที่ถ่ายภาพอย่างแม่นยำ เมื่อแอปไม่ต้องการข้อมูลนั้นหรือไม่มีสิทธิ์ที่จำเป็น
อีกประเด็นสำคัญคือMediaProvider เป็นส่วนหนึ่งของโมดูลหลัก (หรือโมดูลที่ระบบสามารถอัปเดตได้) ซึ่งช่วยให้ Google และผู้ผลิตสามารถอัปเดตได้อย่างอิสระผ่าน Google Playด้วยวิธีนี้ ช่องโหว่ด้านความปลอดภัยจะได้รับการแก้ไข ความเข้ากันได้กับรูปแบบไฟล์ใหม่ ๆ จะถูกเพิ่มเข้ามา และฟีเจอร์ต่าง ๆ จะได้รับการปรับปรุงโดยไม่ต้องรอการอัปเดตระบบแบบเต็มรูปแบบ
MediaProvider มีอิทธิพลต่อชีวิตประจำวันของคุณอย่างไร
แม้ว่าคุณจะมองไม่เห็น แต่ MediaProvider ทำงานอยู่ตลอดเวลาในเบื้องหลัง ตัวอย่างที่เห็นได้ชัดเจนว่ามันส่งผลต่อประสบการณ์การใช้งานประจำวันของคุณอย่างไร ได้แก่:
- เปิดนิทรรศการภาพอย่างรวดเร็ว: เมื่อคุณเปิดแอปรูปภาพ แอปจะสอบถามข้อมูลจาก MediaStore และด้วยการจัดทำดัชนีไว้ล่วงหน้าของโมดูล ทำให้สามารถแสดงรูปภาพของคุณได้เกือบจะในทันที
- ค้นหาตามวันที่ ประเภท หรืออัลบั้ม: แกลเลอรีหลายแห่งอนุญาตให้คุณกรองตามวิดีโอ ภาพเซลฟี่ ภาพหน้าจอ หรือวันที่ที่ระบุ ข้อมูลทั้งหมดนี้มาจาก... ข้อมูลเมตาที่จัดการโดย MediaProvider.
- เครื่องเล่นเพลงและพอดแคสต์: รายชื่อที่จัดเรียงตามศิลปิน อัลบั้ม ประเภท หรือเพลย์ลิสต์นั้น อ้างอิงจากข้อมูลที่ MediaProvider รวบรวมและปรับให้เป็นมาตรฐานจากไฟล์เสียง
- แอปส่งข้อความและโซเชียลมีเดีย: เมื่อคุณแชร์รูปภาพจาก WhatsApp, Telegram หรือ Instagram โดยใช้ตัวเลือกรูปภาพ รูปภาพเหล่านั้นจะถูกแชร์ไปยังที่อื่น การอ่านแคตตาล็อกของ MediaStore และการกรองตามประเภทของเนื้อหาที่ร้องขอ
- ตัวจัดการไฟล์: เบราว์เซอร์บางตัวใช้การค้นหาใน MediaStore เพื่อแสดงรายการมัลติมีเดียทั้งหมดอย่างรวดเร็ว แทนที่จะต้องค้นหาผ่านโฟลเดอร์และไฟล์นับพันรายการด้วยตนเอง
แม้แต่ภารกิจที่ไม่ค่อยปรากฏให้เห็นชัดเจนนัก เช่น การที่ภาพถ่ายจากกล้องปรากฏในแกลเลอรีหรือระบบคลาวด์ภายในไม่กี่วินาที ก็มักจะได้รับการประสานงานกับ MediaProvider ซึ่งมีหน้าที่ในการลงทะเบียนรายการใหม่ ดึงข้อมูลเมตา และแจ้งให้แอปพลิเคชันที่เกี่ยวข้องทราบถึงการเปลี่ยนแปลง
วิวัฒนาการของ MediaProvider: จาก Android 10 ไปจนถึง Android 11 และสูงกว่านั้น

การเปลี่ยนแปลงครั้งใหญ่ในวิวัฒนาการของ MediaProvider เริ่มต้นขึ้นพร้อมกับการมาถึงของพื้นที่จัดเก็บข้อมูลแบบจำกัดขอบเขต (scoped storage)ใน Android 10 ตั้งแต่นั้นเป็นต้นมา ระบบได้จัดระเบียบวิธีการระบุไฟล์มีเดียและวิธีการแสดงไฟล์เหล่านั้นแก่แอปต่างๆ ใหม่ ทำให้ MediaProvider ต้องฉลาดขึ้นและปลอดภัยยิ่งขึ้นกว่าเดิม
การเปลี่ยนแปลงที่เริ่มใช้ตั้งแต่ Android 10 เป็นต้นไป
นับตั้งแต่เวอร์ชันนั้นมา Android ได้มีการปรับปรุงที่สำคัญหลายประการเกี่ยวกับการระบุและดึงข้อมูลจากไฟล์มัลติมีเดีย :
- ระบบจะกำหนด ประเภทเนื้อหาไฟล์โดยใช้ส่วนแรกของประเภท MIMEตัวอย่างเช่น เขารู้ว่า
image/pngyimage/x-newly-invented-formatพวกเขาทั้งสอง ประเภทรูปภาพวิธีนี้ช่วยให้สามารถอธิบายสิทธิ์และพฤติกรรมที่เกี่ยวข้องสำหรับผู้ใช้ได้ดียิ่งขึ้น - เพื่อปรับปรุงความปลอดภัย อนุมานประเภท MIME จากนามสกุลไฟล์เท่านั้น จากไฟล์ โดยหลีกเลี่ยงเทคนิคการตรวจจับเนื้อหาที่อาจก่อให้เกิดช่องโหว่
- การพิจารณาของ MIME นั้นอิงตาม เป็นการผสมผสานระหว่างตารางที่สืบทอดมาจาก Debian Linux และคำจำกัดความเฉพาะของ Androidส่งผลให้การตรวจจับรูปแบบที่ผิดปกติมีความน่าเชื่อถือและสม่ำเสมอมากขึ้น
- MediaProvider มอบหมายการรวบรวมข้อมูลเมตาขั้นสูงให้กับเครื่องมือเฉพาะทาง:
MediaMetadataRetrieverสำหรับไฟล์video/*yaudio/*และExifInterfaceสำหรับไฟล์image/*จึงได้รับ ระยะเวลา, อัตราบิต, ความละเอียด, การวางแนว, ข้อมูลกล้อง และข้อมูลที่เป็นประโยชน์อื่น ๆ
การเปลี่ยนแปลงเหล่านี้ทำให้แอปต่างๆ สามารถรับเมตาเดตาที่มีความน่าเชื่อถือและได้มาตรฐานมากขึ้นในขณะเดียวกันก็เสริมสร้างมาตรการรักษาความปลอดภัยและวางรากฐานสำหรับสิทธิ์การเข้าถึงที่ได้รับการปรับปรุงให้ดียิ่งขึ้นอย่างที่เราเห็นในปัจจุบัน
มีการปรับปรุงต่างๆ ที่เริ่มนำมาใช้ตั้งแต่ Android 11 เป็นต้นไป
ใน Android 11 นั้น MediaProvider ได้ต่อยอดจากพื้นฐานเหล่านี้และก้าวไปอีกขั้นในการจัดการเนื้อหา ประสิทธิภาพ และความสามารถสำหรับแอปต่างๆ :
- ถูกสร้างขึ้น การปรับปรุงที่สำคัญในการจัดทำดัชนี ของไฟล์และข้อมูลเมตา ตอนนี้โมดูลจะปรับข้อมูลเมตาที่มีอยู่ให้สอดคล้องกับสิ่งที่ API ของ MediaStore เปิดเผย ทำให้สิ่งที่จัดเก็บไว้ภายในสอดคล้องกับสิ่งที่แอปพลิเคชันสามารถเรียกดูได้ดียิ่งขึ้น
- มีการเพิ่มคอลัมน์ใหม่ลงในฐานข้อมูล เช่น
is_favoriteและข้อโต้แย้งสำหรับการปรึกษาหารือQUERY_ARG_MATCH_FAVORITEสิ่งนี้ช่วยให้สามารถใช้งานแอปพลิเคชันประเภทแกลเลอรีได้ กรองเนื้อหาที่ทำเครื่องหมายว่าเป็นรายการโปรดได้อย่างรวดเร็ว โดยผู้ใช้ - MediaProvider เริ่มต้นขึ้น ข้อมูลเมตาของพื้นที่สีดัชนีเป็นสิ่งสำคัญสำหรับการจัดการเนื้อหา HDR เพื่อให้ได้ภาพถ่ายที่สมจริงยิ่งขึ้น และแสดงผลได้อย่างแม่นยำยิ่งขึ้นบนหน้าจอขั้นสูง
- มีการแนะนำคอลัมน์ดังกล่าว
is_trashedและข้อโต้แย้งQUERY_ARG_MATCH_TRASHEDเพื่อแยกแยะไฟล์ต่างๆ ที่อยู่ในนั้นได้อย่างชัดเจน ถังขยะรีไซเคิลอนุญาตให้แกลเลอรี่จัดการถังขยะนั้นได้ด้วยตนเอง - พวกเขาปรากฏตัว API ใหม่สำหรับการดำเนินการจำนวนมาก บนองค์ประกอบหลายอย่างที่มีกล่องโต้ตอบยืนยันจากผู้ใช้เพียงกล่องเดียว ซึ่งรวมถึง:
createDeleteRequest()เพื่อลบไฟล์หลายไฟล์พร้อมกันcreateFavoriteRequest()เพื่อทำเครื่องหมายหรือยกเลิกเครื่องหมายรายการโปรดหลายรายการด้วยการกระทำเพียงครั้งเดียวcreateTrashRequest()เพื่อส่งไฟล์จำนวนมากไปยังถังขยะโดยตรงcreateWriteRequest()เพื่อขออนุญาตเขียนในหลายรายการพร้อมกัน
- มีการเพิ่มคอลัมน์ใหม่ เช่น
GENERATION_ADDEDyGENERATION_MODIFIEDที่อนุญาตให้แอป ตรวจจับการเปลี่ยนแปลงที่เกิดขึ้นนับตั้งแต่การซิงโครไนซ์ครั้งก่อนได้อย่างรวดเร็ว โดยไม่ต้องสแกนไลบรารีทั้งหมดใหม่อีกครั้ง - มีการเพิ่มหนึ่งรายการ API สาธารณะของ
GROUP BYซึ่งช่วยให้คุณจัดกลุ่มผลลัพธ์ตามอัลบั้ม วันที่ หรือข้อมูลเมตาอื่นๆ โดยไม่ต้องทำการประมวลผลเพิ่มเติมที่ซับซ้อนในแอป - มันได้รับการปรับปรุงแล้ว
ExifInterfaceสำหรับ ดึงข้อมูลเมตาจากคอนเทนเนอร์ PNG และ WebPโดยขยายจำนวนรูปแบบภาพที่สามารถประมวลผลด้วยวิธีการขั้นสูง - SystemUI เริ่มเขียนข้อมูลเมตา
DateTimeOriginalในภาพหน้าจอ เพื่อให้ MediaProvider สามารถทำได้ เพื่อจัดระเบียบและแสดงภาพประเภทนี้ให้ดียิ่งขึ้น ภายในหอศิลป์
ในแง่ของสถาปัตยกรรม MediaProvider ได้ถูกย้ายไปใช้ รูปแบบ APK-in-APEXซึ่งหมายความว่าโค้ด Java จะถูกบรรจุเป็น APK ภายในคอนเทนเนอร์ APEX ระดับระบบ ข้อดีคือโมดูลนี้สามารถโหลดได้เร็วมากในกระบวนการบูตแม้กระทั่งก่อนส่วนอื่นๆ ของเฟรมเวิร์ก และยังได้รับประโยชน์จากการอัปเดตอย่างรวดเร็วผ่าน Google Play อีกด้วย
โมดูล MediaProvider และ Mainline: การอัปเดตแบบสแตนด์อโลนบน Android

หนึ่งในกลยุทธ์หลักของ Google ในการต่อสู้กับปัญหาความซ้ำซ้อนและนำเสนออุปกรณ์ที่ปลอดภัยยิ่งขึ้นคือการสร้างโมดูล Mainlineซึ่งเป็นส่วนประกอบของระบบที่สามารถอัปเดตได้โดยอิสระจาก Google Play โดยไม่ต้องมีการแทรกแซงจากผู้ผลิตโดยตรงหรือจำเป็นต้องติดตั้งการอัปเดต OTA แบบเต็มรูปแบบ
โมดูลเหล่านี้ประกอบด้วย MediaProvider รวมถึงโมดูลอื่นๆ เช่นART (สภาพแวดล้อมการทำงานของแอป), Conscrypt (ไลบรารีการเข้ารหัส), Media , Media Codecs , Wi-Fi , Tetheringและอื่นๆ อีกมากมาย โมดูลเหล่านี้ทำงานร่วมกันเพื่อให้ Android สามารถแก้ไขข้อบกพร่องที่สำคัญ ปรับปรุงประสิทธิภาพ และเพิ่มคุณสมบัติใหม่ๆ ได้โดยไม่ต้องพึ่งพาตารางการออกเวอร์ชันของแต่ละผู้ผลิต อย่างสิ้นเชิง
สิ่งสำคัญคือต้องชี้แจงว่า แม้ว่าสถาปัตยกรรมแบบโมดูลาร์จะเริ่มนำมาใช้กับ Android 10 แต่MediaProvider โดยเฉพาะอย่างยิ่ง ได้รับประโยชน์จากการอัปเดต Mainline ตั้งแต่ Android 11 เป็นต้นไปด้วยเหตุนี้ หากตรวจพบช่องโหว่ด้านความปลอดภัย ความไม่เข้ากันกับรูปแบบมัลติมีเดียใหม่ หรือปัญหาด้านประสิทธิภาพการจัดทำดัชนีGoogle สามารถแก้ไขและปล่อยการอัปเดตได้เช่นเดียวกับแอปอื่นๆ บน Google Play ด้วยวิธีนี้ โทรศัพท์ของคุณจะมีความปลอดภัยมากขึ้นและสอดคล้องกับระบบนิเวศโดยรวม แม้ว่าผู้ผลิตโทรศัพท์ของคุณจะไม่ได้ปล่อย Android เวอร์ชันใหม่เร็วเป็นพิเศษก็ตาม
มีโมดูล Mainline อื่น ๆ อะไรอีกบ้าง และ MediaProvider เกี่ยวข้องกับโมดูลเหล่านั้นอย่างไร

MediaProvider เป็นเพียงหนึ่งในหลายโมดูลของ Mainlineที่ออกแบบมาเพื่อให้ระบบมีความยืดหยุ่น ปลอดภัย และอัปเกรดได้ง่าย โมดูลที่สำคัญที่สุดบางส่วน โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับประสบการณ์ด้านมัลติมีเดียและเครือข่าย ได้แก่:
- สื่อ: โปรแกรมนี้ทำหน้าที่ประมวลผลไฟล์มัลติมีเดียบนอุปกรณ์พกพา รวมถึงบริการเล่น บันทึก และจัดการการสตรีม
- ตัวแปลงสื่อ: โปรแกรมนี้จะอัปเดตตัวแปลงสัญญาณเสียงและวิดีโอให้ทันสมัยอยู่เสมอ ทำให้สามารถใช้งานร่วมกันได้ดีขึ้นและมีความปลอดภัยมากขึ้นในการถอดรหัสและเข้ารหัสโดยไม่ต้องเปลี่ยนแปลงระบบทั้งหมด
- ศิลปะ: โมดูลนี้จัดการสภาพแวดล้อมการทำงานของแอปพลิเคชัน (การคอมไพล์ การเพิ่มประสิทธิภาพไบต์โค้ด ฯลฯ) การปรับปรุงในโมดูลนี้ส่งผลโดยตรงต่อ... ประสิทธิภาพการใช้งาน.
- เข้ารหัส: เป็นการอัปเดตส่วนการเข้ารหัสของระบบ ซึ่งมีความสำคัญอย่างยิ่งต่อการเชื่อมต่อที่ปลอดภัย ใบรับรอง และการเข้ารหัส
- บริการ Wi-Fi: ประกอบด้วยตรรกะการเชื่อมต่อ Wi-Fi ซึ่งช่วยให้สามารถประยุกต์ใช้งานได้ ปรับปรุงด้านเสถียรภาพ ความเข้ากันได้ และความปลอดภัย โดยไม่มีการอัปเดต OTA แบบเต็มรูปแบบ
- การปล่อยสัญญาณ: ควบคุมการแชร์การเชื่อมต่อ Wi-Fi, USB, Bluetooth หรือ Ethernet ผ่านอุปกรณ์มือถือของคุณ
- ตัวควบคุมสิทธิ์: อัปเดตโมดูลที่จัดการสิทธิ์และองค์ประกอบส่วนติดต่อผู้ใช้เพื่อความเป็นส่วนตัว
MediaProvider ทำงานร่วมกับ โมดูล MediaและMedia Codecs อย่างใกล้ชิด เนื่องจากโมดูลเหล่านี้มีหน้าที่ในการถอดรหัสและประมวลผลเนื้อหาที่ MediaProvider จัดทำดัชนี เมื่อมีการเปิดตัวรูปแบบใหม่หรือมีการอัปเดตตัวแปลงสัญญาณที่มีอยู่ MediaProvider สามารถเริ่มรับรู้และจัดทำแคตตาล็อกรูปแบบใหม่เหล่านี้ได้ (เช่น HEVC รูปแบบใหม่, HDR หรือตัวแปลงสัญญาณเสียง) โดยไม่จำเป็นต้องอัปเดต Android ทั้งหมด หากโมดูลสื่ออื่นๆ ได้รับการอัปเดตแล้วเช่นกัน
หากต้องการทราบว่าโทรศัพท์ของคุณรองรับโมดูล Mainline ใดบ้าง คุณสามารถใช้เครื่องมือต่างๆ เช่นแอปฟรี Mainline Updaterซึ่งจะแสดงโมดูลที่มีอยู่ และด้วยการกดปุ่มเพียงครั้งเดียว จะพาคุณไปยังส่วนการอัปเดตระบบใน Google Playที่นั่นคุณจะเห็นว่ามีแพตช์ที่รอการติดตั้งใดบ้างที่ส่งผลกระทบต่อ MediaProvider เป็นต้น
MediaProvider, ความเป็นส่วนตัวและความปลอดภัยในการจัดเก็บข้อมูล

หนึ่งในความก้าวหน้าครั้งสำคัญล่าสุดของ MediaProvider คือการปกป้องความเป็นส่วนตัวของผู้ใช้ก่อนหน้านี้ แอปจำนวนมากสามารถเข้าถึงโฟลเดอร์ทั้งหมดบนอุปกรณ์จัดเก็บข้อมูลภายนอกและอ่านข้อมูลเมตาโดยละเอียด รวมถึงตำแหน่ง GPS ที่ฝังอยู่ในรูปภาพ โดยไม่ต้องมีการปรับแต่งจากระบบ
ด้วยการผสานรวมของพื้นที่จัดเก็บข้อมูลแบบกำหนดขอบเขต + MediaProvider + MediaStoreทำให้ทุกอย่างเปลี่ยนไป:
- แอปเหล่านั้นมี การเข้าถึงที่ถูกจำกัด ไปยังรูปภาพ วิดีโอ และไฟล์เสียง ตัวอย่างเช่น แอปแก้ไขรูปภาพสามารถเข้าถึงรูปภาพเฉพาะที่ผู้ใช้เลือกผ่านทางนั้นได้ เครื่องมือเลือกรูปภาพแต่ไม่ใช่ภาพที่เหลือในแกลเลอรีของคุณ
- MediaProvider สามารถ แก้ไขหรือจำกัดข้อมูลเมตาที่มีความละเอียดอ่อนเช่น ตำแหน่งที่ถ่ายภาพอย่างแม่นยำ หรือข้อมูลภายในของกล้อง หากแอปไม่ต้องการข้อมูลเหล่านั้น
- ใบอนุญาตมีจำนวนมากขึ้น เป็นเม็ดเล็กๆ และโปร่งใสประเด็นไม่ได้อยู่ที่การอนุญาตหรือปฏิเสธการเข้าถึงพื้นที่จัดเก็บข้อมูลโดยสิ้นเชิงอีกต่อไป แต่เป็นเรื่องของการให้สิทธิ์การเข้าถึง เนื้อหาประเภทเฉพาะ (รูปภาพ วิดีโอ ไฟล์เสียง) หรือแม้แต่ไฟล์ที่ผู้ใช้เลือกเอง
- มีการปรับปรุงการป้องกันแอปพลิเคชันที่เป็นอันตรายซึ่งพยายามสแกนพื้นที่จัดเก็บข้อมูลเพื่อค้นหาเอกสารส่วนตัวหรือเนื้อหาที่ละเอียดอ่อน MediaProvider ทำหน้าที่เป็น... กรองและตัดสิน สิ่งที่สามารถมองเห็นหรือแก้ไขได้
ทั้งหมดนี้ผสานรวมกับความเป็นไปได้ของประสบการณ์ขั้นสูง เช่น โปรแกรมเลือกรูปภาพล่าสุด และผู้ให้บริการเนื้อหาสื่อบนคลาวด์ซึ่ง MediaProvider ก็เป็นส่วนหนึ่งในกระแสข้อมูลนี้ด้วย
API และตัวอย่างการใช้งาน: แอปโต้ตอบกับ MediaProvider อย่างไร

แอปพลิเคชันของผู้ใช้ไม่ได้สื่อสารโดยตรงกับ MediaProvider แต่จะสื่อสารผ่านMediaStoreซึ่งเป็น API สาธารณะที่ทำหน้าที่เป็นอินเทอร์เฟซ API นี้มีระบบนิเวศที่สมบูรณ์แบบของเจตนา ค่าคงที่ และวิธีการสืบค้นสำหรับการเข้าถึงไฟล์มีเดียในรูปแบบมาตรฐาน
ความพยายามในการบันทึกและเลือกเนื้อหา
หนึ่งในวัตถุประสงค์ที่โดดเด่นที่สุดที่ใช้ประโยชน์จาก MediaStore (และ MediaProvider ด้วย) ได้แก่:
MediaStore.ACTION_IMAGE_CAPTURE: ฟังก์ชันนี้ช่วยให้คุณเปิดกล้องเพื่อถ่ายภาพและส่งภาพกลับไปยังแอปที่กำลังโทรอยู่MediaStore.ACTION_IMAGE_CAPTURE_SECURE: คล้ายกับรุ่นก่อนหน้า แต่ได้รับการออกแบบมาสำหรับสภาพแวดล้อมที่อุปกรณ์ได้รับการปกป้อง (รหัส PIN, รูปแบบ, ไบโอเมตริก) และต้องการรักษาสภาพแวดล้อมที่ปลอดภัยMediaStore.ACTION_VIDEO_CAPTURE: เริ่มใช้งานกล้องในโหมดวิดีโอ และส่งผลลัพธ์กลับไปยังแอปพลิเคชันที่เรียกใช้งานMediaStore.ACTION_PICK_IMAGES: เปิด เครื่องมือเลือกรูปภาพ ระบบปฏิบัติการ Android รุ่นใหม่ มอบประสบการณ์การใช้งานที่เป็นหนึ่งเดียวในการเลือกรูปภาพและวิดีโอจากแหล่งต่างๆ (หน่วยความจำภายในเครื่อง คลาวด์ ฯลฯ)MediaStore.ACTION_PICK_IMAGES_SETTINGS: ซึ่งจะนำไปสู่การตั้งค่าที่เกี่ยวข้องกับตัวเลือกรูปภาพและผู้ให้บริการสื่อMediaStore.ACTION_REVIEWyMediaStore.ACTION_REVIEW_SECURE: ฟังก์ชันเหล่านี้ช่วยให้คุณสามารถตรวจสอบหรือดูตัวอย่างเนื้อหามัลติมีเดียที่บันทึกใหม่ได้ในบริบทที่ควบคุมได้
นอกเหนือจากเจตนาเหล่านี้แล้ว MediaStore ยังกำหนดรายการเพิ่มเติมและค่าคงที่ จำนวนมาก ที่ MediaProvider เคารพและนำไปใช้เพื่อบังคับใช้กฎเฉพาะ ตัวอย่างเช่น:
EXTRA_DURATION_LIMIT: ระยะเวลาบันทึกสูงสุดที่อนุญาตเมื่อทำการบันทึกวิดีโอEXTRA_SIZE_LIMIT: ขนาดไฟล์เอาต์พุตสูงสุดEXTRA_OUTPUT: URI ที่จะใช้จัดเก็บภาพหรือวิดีโอที่ได้EXTRA_PICK_IMAGES_MAX: จำนวนรายการสูงสุดที่ผู้ใช้สามารถเลือกได้ในเซสชันการเลือก
การค้นหาขั้นสูงใน MediaStore
แอปที่ต้องการอ่านข้อมูลจากคลังสื่อจะใช้คำสั่งค้นหาไปยัง MediaStoreพร้อมด้วยอาร์กิวเมนต์และตัวกรองต่างๆ ฟังก์ชันบางอย่างที่ MediaProvider เปิดเผยผ่าน MediaStore มีดังนี้:
- กรองตามรายการโปรดและถังขยะ: โดยใช้อาร์กิวเมนต์
QUERY_ARG_MATCH_FAVORITEyQUERY_ARG_MATCH_TRASHEDแอปต่างๆ สามารถรับได้ เฉพาะรายการที่ทำเครื่องหมายว่าเป็นรายการโปรดเท่านั้น หรือพวกที่อยู่ในถังขยะ - การตรวจจับการเปลี่ยนแปลงแบบเพิ่มขึ้น: คอลัมน์เช่น
GENERATION_ADDEDyGENERATION_MODIFIEDฟังก์ชันนี้ช่วยให้คุณเห็นได้อย่างรวดเร็วว่ามีการเพิ่มหรือแก้ไของค์ประกอบใดบ้างนับตั้งแต่การซิงโครไนซ์ครั้งก่อน ซึ่งเป็นสิ่งสำคัญสำหรับแอปสำรองข้อมูลหรือแกลเลอรีขั้นสูง - การดำเนินการจำนวนมากที่ผู้ใช้ควบคุม: วิธีการต่างๆ เช่น
createDeleteRequest(),createTrashRequest(),createFavoriteRequest()ocreateWriteRequest()อนุญาตแอป เสนอการเปลี่ยนแปลงชุดงานแต่ระบบจะแสดงกล่องโต้ตอบยืนยันให้ผู้ใช้เห็น เพื่อให้ผู้ใช้มีสิทธิ์ตัดสินใจขั้นสุดท้าย - การอ่านและการเขียนข้อมูล EXIF: ตลอด
ExifInterfaceแอปสามารถอ่านข้อมูลต่างๆ เช่น ทิศทางการถ่ายภาพ เวลาที่ถ่ายภาพ รุ่นกล้อง ตำแหน่งที่ตั้ง (หากมีและผู้ใช้อนุญาต) และข้อมูลเมตาอื่นๆ ซึ่งมีความสำคัญอย่างยิ่งสำหรับ หมุนภาพให้ถูกต้อง เรียงลำดับตามเวลา หรือแสดงข้อมูลการถ่ายภาพ.
ผู้ให้บริการสื่อ พื้นที่จัดเก็บข้อมูลบนคลาวด์ และตัวเลือกรูปภาพ

ด้วยการมาถึงของ โปรแกรม เลือกภาพถ่ายสมัยใหม่และผู้ให้บริการสื่อบนระบบคลาวด์บทบาทของผู้ให้บริการสื่อจึงมีความสำคัญมากยิ่งขึ้นในกระบวนการเลือกภาพถ่ายและวิดีโอ
ระบบปฏิบัติการ Android อนุญาตให้แอปบางแอป ซึ่งโดยทั่วไปจะเป็นบริการภาพถ่ายบนคลาวด์ที่ผู้ผลิตกำหนด สามารถทำหน้าที่เป็นCloudMediaProviderได้ แอปเหล่านี้จะส่งเนื้อหาที่จัดเก็บไว้ในคลาวด์ไปยังตัวเลือกภาพถ่าย เพื่อให้ผู้ใช้สามารถเลือกได้ไม่เพียงแต่ไฟล์ในเครื่องเท่านั้น แต่ยังรวมถึงไฟล์ที่จัดเก็บไว้ในบริการระยะไกลด้วย
ในสถานการณ์นี้ MediaProvider และ Photo Picker ทำงานร่วมกันอย่างลงตัว:
- ระบบจะเริ่มต้นใช้งานผู้ให้บริการคลาวด์ที่ต้องการและทำการซิงโครไนซ์เป็นระยะ เมตาดาต้ามัลติมีเดีย โดยใช้ระบบเลือกรูปภาพเบื้องหลัง
- เมื่อแอปเปิดใช้งานตัวเลือกรูปภาพโดยใช้ Intent ต่างๆ เช่น
ACTION_PICK_IMAGESoACTION_GET_CONTENTตัวเลือก รวมเข้าเป็นตารางเดียว องค์ประกอบภายในที่จัดหาโดย MediaProvider และองค์ประกอบภายนอกที่จัดหาโดย CloudMediaProvider - ขณะที่ผู้ใช้เลื่อนหน้าจอ ตัวเลือกจะแสดงข้อความแจ้งเตือน ภาพขนาดย่อที่ปรับให้เหมาะสม เพื่ออำนวยความสะดวกให้แก่ซัพพลายเออร์ ทำให้การขนส่งเป็นไปอย่างรวดเร็วและมีประสิทธิภาพ
- เมื่อทำการเลือกเสร็จสิ้น หากเลือกเนื้อหาบนคลาวด์ ระบบจะสร้าง... URI ที่ปลอดภัย และ MediaProvider จะประสานงานผ่าน FUSE และเลเยอร์อื่นๆ เพื่อเข้าถึงข้อมูลจริง โดยคำนึงถึงสิทธิ์การเข้าถึงและความเป็นส่วนตัวอยู่เสมอ
ในส่วนของ CloudMediaProvider นั้น ได้เปิดเผยเมธอดต่างๆ เช่น onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()ซึ่งโปรแกรมเลือกรูปภาพ (Photo Picker) ใช้ในการแสดงรายการรูปภาพ อัลบั้ม เนื้อหาที่ถูกลบ และเปิดทั้งภาพตัวอย่างและไฟล์ฉบับเต็ม แม้ว่าวิธีการเหล่านี้จะถูกนำไปใช้ภายนอก MediaProvider แต่โมดูลสื่อของระบบก็ทำงานร่วมกับวิธีการเหล่านี้เพื่อนำเสนอคุณสมบัติต่างๆ ประสบการณ์ที่สม่ำเสมอในการเข้าถึงสื่อทั้งในระบบภายในและระบบคลาวด์.
MediaProvider และการแปลงรหัสวิดีโอที่เข้ากันได้

อีกหนึ่งคุณสมบัติขั้นสูงที่ MediaProvider มีบทบาทสำคัญคือการแปลงรหัสเนื้อหาสื่อที่เข้ากันได้คุณสมบัตินี้ช่วยให้อุปกรณ์ต่างๆ สามารถใช้รูปแบบวิดีโอที่ทันสมัยและมีประสิทธิภาพ เช่น HEVC หรือโปรไฟล์ HDR บางประเภท โดยไม่ทำให้ความเข้ากันได้กับแอปเก่าๆ ที่รองรับเฉพาะรูปแบบคลาสสิกอย่าง AVC (H.264) เสียไป
กลไกการทำงานเป็นดังนี้:
- ผู้ผลิตและผู้ใช้สามารถกำหนดค่ากล้องได้ดังนี้ โดยค่าเริ่มต้นจะบันทึกในรูปแบบ HEVC หรือรูปแบบอื่นๆ ที่มีประสิทธิภาพมากกว่าในแง่ของพื้นที่จัดเก็บและแบนด์วิดท์
- เมื่อแอปนั้น ไม่รองรับ HEVC เมื่อคุณพยายามเปิดวิดีโอผ่าน MediaStore และ MediaProvider ระบบอาจแสดงข้อผิดพลาด ดักจับการอ่านไฟล์ ด้วยการใช้ FUSE (Filesystem in Userspace)
- หากตรวจพบว่าแอปไม่รองรับรูปแบบดังกล่าว MediaProvider จะแสดงข้อความแจ้งเตือนพร้อมกับ... บริการแปลงสื่อเริ่มกระบวนการแปลงไฟล์ในเบื้องหลังเพื่อสร้างไฟล์เวอร์ชัน AVC หรือรูปแบบอื่นที่เข้ากันได้
- แอปจะได้รับตัวระบุไฟล์ที่ชี้ไปยังเวอร์ชันที่แปลงแล้ว (หรือเวอร์ชันดั้งเดิม หากแอปสนับสนุนรูปแบบนั้น) ในลักษณะที่นักพัฒนาไม่เห็นผลกระทบใดๆ เลย
กระบวนการแปลงไฟล์นี้ถูกควบคุมด้วยข้อจำกัดด้านเวลาและทรัพยากรเพื่อป้องกันการใช้งานในทางที่ผิด ตัวอย่างเช่น จะประมวลผลเฉพาะวิดีโอที่มีความยาวไม่เกินที่กำหนด และจำนวนเซสชันต่อเนื่องหรือเวลาประมวลผลทั้งหมดต่อแอปจะถูกจำกัด หากเกินขีดจำกัดเหล่านี้ ระบบจะส่งคืนไฟล์ต้นฉบับที่ยังไม่ได้ประมวลผล
เพื่อให้บรรลุเป้าหมายนี้ สถาปัตยกรรมจึงประกอบด้วยส่วนประกอบหลายอย่าง:
- MediaTranscodingManager: API ของระบบที่ช่วยให้ MediaProvider และส่วนอื่นๆ ของเฟรมเวิร์กสามารถสื่อสารกับบริการแปลงรหัสได้
- บริการแปลงสื่อ: บริการที่จัดการคิวการแปลงไฟล์วิดีโอ เซสชันที่ใช้งานอยู่ และการจัดสรรทรัพยากรโคเดก
- MediaTranscoder: ไลบรารีพื้นฐานที่ทำการแปลงระหว่างรูปแบบต่างๆ โดยอาศัย... MediaCodec และอาจมีส่วนเสริมจากผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) สำหรับการทำงานต่างๆ เช่น การแปลง HDR เป็น SDR
MediaProvider อยู่ใจกลางของกระบวนการทั้งหมดนี้: มันคือโมดูลที่ดักจับความพยายามในการอ่านไฟล์ตัดสินใจว่าจำเป็นต้องแปลงไฟล์หรือไม่ตามความสามารถของแอป และสุดท้ายส่งตัวอธิบายที่ถูกต้องไปยังไฟล์ต้นฉบับหรือไฟล์ที่แปลงแล้ว
การปรับแต่งและการขยาย: MediaProvider สำหรับนักพัฒนาและผู้ผลิต
หนึ่งในคุณสมบัติที่ทรงพลังที่สุด—และไม่ค่อยเป็นที่รู้จัก—ของ MediaProvider คือความสามารถในการปรับแต่งพฤติกรรมของมันสิ่งนี้มีความสำคัญอย่างยิ่งสำหรับนักพัฒนา ROM แบบกำหนดเอง ผู้ผลิตอุปกรณ์ และผู้ผลิตแต่ยังช่วยให้เข้าใจว่าทำไมอุปกรณ์บางเครื่องจึงมีพฤติกรรมที่แตกต่างกันเล็กน้อยเมื่อใช้รูปแบบหรือเส้นทางจัดเก็บข้อมูลบางอย่าง
รูปแบบสื่อแบบกำหนดเอง
ผู้ผลิตสามารถเพิ่มการรองรับรูปแบบสื่อที่เป็นกรรมสิทธิ์หรือรูปแบบที่ไม่ค่อยพบเห็นได้ทั่วไปสำหรับแต่ละประเภทใหม่ พวกเขาต้องดำเนินการดังต่อไปนี้:
- ลงทะเบียนหนึ่ง นามสกุลไฟล์เฉพาะ และเชื่อมโยงกับประเภท MIME เฉพาะโดย
MimeUtils. - กำหนดค่าโมดูล เครื่องสกัดสื่อ เพื่อให้สามารถอ่านเมตาเดตาในรูปแบบนั้นได้ เพื่อให้ MediaProvider สามารถจัดทำดัชนีได้อย่างถูกต้อง
- ในกรณีของ
video/*yaudio/*ยังคงพึ่งพาต่อไปMediaMetadataRetrieverเพื่อแสดงข้อมูลเมตาที่เกี่ยวข้อง - ในกรณีของ
image/*ขยายหรือใช้android.media.ExifInterfaceเพื่อสกัดและส่งคืน ข้อมูลเมตา EXIF ที่ได้รับการปรับให้เป็นมาตรฐาน แม้แต่ในรูปแบบไฟล์ภาพแบบกำหนดเองก็ตาม
สิ่งสำคัญที่ควรทราบคือ การกำหนดนิยามใหม่ของส่วนขยายหรือประเภท MIME ที่กำหนดไว้แล้วใน AOSPนั้นไม่ได้รับอนุญาตเพื่อหลีกเลี่ยงความไม่สอดคล้องกันหรือความขัดแย้งระหว่างอุปกรณ์ต่างๆ
การเลือกอุปกรณ์จัดเก็บข้อมูลเพื่อจัดทำดัชนี
โดยค่าเริ่มต้น MediaProvider จะจัดทำดัชนีวอลุ่มทั้งหมดที่ส่งคืนโดย StorageManager.getStorageVolumes() ที่ไหน StorageVolume.getMediaStoreVolumeName() มันไม่ใช่ค่าว่าง อย่างไรก็ตาม ผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) สามารถทำได้ ปรับแต่งว่าเล่มใดบ้างที่จะถูกจัดทำดัชนี การสร้างแบรนด์ VolumeInfo.MOUNT_FLAG_INDEXABLE บนอุปกรณ์เหล่านั้นที่ต้องการให้ปรากฏในคลังสื่อ
ขอแนะนำให้หลีกเลี่ยงการทำเครื่องหมายไดรฟ์ชั่วคราวว่าเป็นไดรฟ์ที่สามารถสร้างดัชนีได้เช่น ไดรฟ์ USB OTG บางประเภทที่เสียบและถอดปลั๊กบ่อยครั้ง เพื่อป้องกันความไม่สอดคล้องกันในฐานข้อมูลหรือข้อผิดพลาดที่เกิดจากการที่ไดรฟ์หายไปอย่างกะทันหัน
การเปลี่ยนและการปรับแต่ง MTP Stack
ตรรกะเบื้องหลัง MTP (Media Transfer Protocol) ซึ่งใช้สำหรับการถ่ายโอนไฟล์ระหว่างอุปกรณ์พกพาและพีซีผ่าน USBได้ถูกแยกออกจากโมดูล MediaProvider แล้ว โดยเริ่มตั้งแต่บางเวอร์ชันเป็นต้นไป สแต็ก MTP จะอยู่ภายนอกโมดูลทั้งหมดและรับประกันว่าจะทำงานได้โดยใช้เฉพาะAPI สาธารณะและ API ของระบบเท่านั้น
สิ่งนี้ช่วยให้ผู้ผลิตที่ต้องการโซลูชันการถ่ายโอนเฉพาะสามารถเปลี่ยนหรือปรับเปลี่ยนชุดซอฟต์แวร์ MTP ของตนได้ ตราบใดที่ยังคงรักษาความเข้ากันได้กับสัญญาของ MediaStore และ MediaProviderเพื่อให้ประสบการณ์การคัดลอกและอ่านไฟล์จากคอมพิวเตอร์ยังคงสม่ำเสมอ
โฟลเดอร์เริ่มต้นและรายการยกเว้น
โดยปกติแล้ว เมื่อเปิดใช้งานไดรฟ์จัดเก็บข้อมูลเป็นครั้งแรก MediaProvider จะสร้างชุดข้อมูลขึ้นมา โฟลเดอร์มาตรฐาน ในขณะที่ Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (ตัวเลือกสุดท้ายนี้อาจไม่มีในบางเวอร์ชันเก่า)
สำหรับอุปกรณ์ที่มีข้อกำหนดเฉพาะด้านการจัดการองค์กร ผู้ผลิตอุปกรณ์ (OEM) สามารถจัดหาให้ได้ รายชื่อโฟลเดอร์ที่จะละเว้น ระหว่างการสร้างเริ่มต้นผ่านการซ้อนทับทรัพยากร config_foldersToSkipInDefaultCreationดังนั้น ตัวอย่างเช่น พวกเขาสามารถป้องกันไม่ให้มีการสร้างโฟลเดอร์โดยค่าเริ่มต้นได้ Notifications/ o Ringtones/ หากพวกเขามีระบบทางเลือกอื่นอยู่แล้ว
ความต้องการทางเทคนิคและการอ้างอิงของ MediaProvider

เมื่อปรับแต่ง MediaProvider ผู้ผลิตอุปกรณ์ (OEM) ต้องคำนึงถึงความสัมพันธ์ทางเทคนิค หลายประการ เพื่อให้แน่ใจว่าทุกอย่างยังคงทำงานได้อย่างถูกต้อง:
- เมื่อใช้งาน รูปแบบไฟล์มัลติมีเดียที่ไม่เป็นมาตรฐานแต่ละรูปแบบจะต้องลงทะเบียนในทั้งสองระบบ
MimeUtilsเช่นเดียวกับในโมดูลของ เครื่องสกัดสื่อมิเช่นนั้น MediaProvider จะไม่สามารถจัดทำดัชนีหรือให้ข้อมูลเมตาที่ครบถ้วนได้ - เพื่อให้แน่ใจว่าชุดอุปกรณ์จัดเก็บข้อมูลแบบกำหนดเอง (ช่องเสียบ SD, พอร์ต USB ในตัว ฯลฯ) ได้รับการจัดทำดัชนี การใช้งานของ
StorageManagerServiceคุณต้องทำเครื่องหมายเล่มที่ต้องการด้วยVolumeInfo.MOUNT_FLAG_INDEXABLE. - หากมีการใช้ MTP stack แบบกำหนดเอง จะต้องสร้างขึ้นจากพื้นฐานเพียงอย่างเดียวเท่านั้น API สาธารณะและ API ระบบ เพื่อให้ยังคงใช้งานร่วมกับ MediaStore ได้ และไม่ทำให้การทำงานร่วมกันระหว่างพีซีและคลังสื่อของอุปกรณ์เสียหาย
นอกจากนี้ ในบริบทของการแปลงรหัสวิดีโอ อุปกรณ์ต้องมีคุณสมบัติตรงตามข้อกำหนดฮาร์ดแวร์ขั้นต่ำ บางประการ ได้แก่ การรองรับการเข้ารหัส HEVC ในกล้อง การมีประสิทธิภาพในการอ่านและเขียนข้อมูลในหน่วยเก็บข้อมูลที่เพียงพอ และตัวแปลงสัญญาณที่สามารถประมวลผลได้ในอัตราสูงในงานแปลงรหัส
การทดสอบ การวินิจฉัย และข้อผิดพลาดทั่วไปของ MediaProvider

โดยปกติแล้ว MediaProvider มักจะไม่ทำงานให้เราสังเกตเห็น อย่างไรก็ตาม เช่นเดียวกับส่วนประกอบระบบอื่นๆ มันก็อาจเกิดปัญหาได้ เช่นการปิดระบบโดยไม่คาดคิดข้อผิดพลาดในการอ่านไฟล์บางไฟล์ ความล้มเหลวในการอัปเดตเมตาเดต้า หรือการหยุดทำงานเมื่อสแกนไดรฟ์ที่เสียหาย
ในระบบนิเวศของ Android มีการทดสอบอัตโนมัติ หลายอย่าง เพื่อตรวจสอบการทำงานที่ถูกต้อง:
- CtsProviderTestCases: ชุดทดสอบของ ชุดทดสอบความเข้ากันได้ ซึ่งเป็นการตรวจสอบความถูกต้องของพฤติกรรมของ API สาธารณะของ MediaStore เทียบกับ MediaProvider
- MediaProviderTests: การทดสอบภายในมุ่งเน้นไปที่พฤติกรรมเฉพาะของโมดูลและส่วนประกอบต่างๆ
นักพัฒนาหรือช่างเทคนิคสามารถเรียกใช้ชุดทดสอบเหล่านี้ได้ด้วยคำสั่งต่างๆ เช่น:
atest --test-mapping packages/providers/MediaProvider
ในฟอรัมทางเทคนิค ผู้ใช้บางรายได้รายงานเรื่องนี้ MediaProvider เกิดข้อผิดพลาดซ้ำๆ เนื่องจากข้อผิดพลาดของหน่วยความจำ (OutOfMemoryErrorโดยเฉพาะอย่างยิ่งเมื่อสแกนคอลเลกชันวิดีโอขนาดใหญ่มาก หรือจัดการกับพาร์ติชั่นการ์ด SD ที่เสียหาย ในกรณีเหล่านี้ ขอแนะนำให้ปฏิบัติดังนี้:
- ตรวจสอบไฟล์ สถานะทางกายภาพของความทรงจำภายในและภายนอก (ฟอร์แมตหรือเปลี่ยนการ์ดหากพบข้อผิดพลาด)
- การบำรุงรักษาระบบและ โมดูล Mainline ที่ได้รับการอัปเดต จาก Google Play เพื่อรับคำแก้ไข
- ตรวจสอบว่ามีแอปใดกำลังสร้างอยู่หรือไม่ ไฟล์ที่เสียหายหรือไฟล์ที่มีเมตาเดตาผิดปกติ ซึ่งเป็นสาเหตุของความล้มเหลวในการจัดทำดัชนี
เครื่องมือและยูทิลิตี้ที่เกี่ยวข้องกับ MediaProvider

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการอัปเดต MediaProvider หรือโมดูล Mainline ที่คุณติดตั้งไว้ คุณสามารถใช้เครื่องมือบางอย่างได้:
- โปรแกรมอัปเดตหลัก: แอปง่ายๆ ที่แสดงรายการ โมดูลหลักที่มีอยู่ในอุปกรณ์ของคุณ นอกจากนี้ยังช่วยให้เข้าถึงแผงการอัปเดตระบบของ Google Play ได้ง่ายขึ้น ซึ่งมีประโยชน์ในการตรวจสอบว่า MediaProvider และส่วนประกอบสำคัญอื่นๆ ของคุณเป็นเวอร์ชันล่าสุดหรือไม่
- ผู้จัดการผู้ให้บริการสื่อ: โมดูลโอเพนซอร์สของ Xposed ที่อนุญาตให้ ตรวจสอบและจำกัดการใช้งาน MediaStore โดยแอปต่างๆ ด้วยฟีเจอร์นี้ ผู้ใช้ขั้นสูงสามารถตรวจสอบได้ว่าแอปพลิเคชันใดส่งคำขอมากที่สุด ใช้สิทธิ์อะไรบ้าง และแม้แต่จำกัดการเข้าถึงบางอย่างเพื่อเพิ่มความเป็นส่วนตัว
เครื่องมือประเภทนี้ไม่ได้จำเป็นสำหรับผู้ใช้ทั่วไป แต่จะช่วยเพิ่มระดับการควบคุมสำหรับผู้ที่ต้องการจัดการพฤติกรรมมัลติมีเดียและความเป็นส่วนตัวบนอุปกรณ์ Android ของตนในรายละเอียดมากขึ้น
MediaProvider ได้กลายเป็นส่วนประกอบสำคัญของระบบ Android: มันจัดการเนื้อหามัลติมีเดียทั้งหมดได้อย่างมีประสิทธิภาพ ปกป้องความเป็นส่วนตัวได้ดียิ่งขึ้นด้วยการจัดเก็บข้อมูลที่มีขอบเขต ช่วยให้การแปลงไฟล์เป็นรูปแบบสมัยใหม่ทำได้ง่ายขึ้น และอัปเดตได้อย่างอิสระด้วยโมดูล Mainline การทำความเข้าใจวิธีการทำงานของส่วนประกอบที่มองไม่เห็นนี้จะช่วยอธิบายว่าทำไมแกลเลอรี แอปเพลง และบริการคลาวด์ของคุณจึงทำงานได้เร็วขึ้น เสถียรขึ้น และปลอดภัยกว่าในระบบรุ่นก่อนๆ มาก


