MediaProvider บน Android: มันคืออะไร ทำงานอย่างไร และทำไมมันถึงสำคัญมาก

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

MediaProvider พื้นที่จัดเก็บมัลติมีเดียสำหรับ Android

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

คุณอาจเจอชื่อ MediaProvider ได้ง่ายๆ ขณะใช้งานตั้งค่าโทรศัพท์ ตรวจสอบการใช้งานพื้นที่จัดเก็บ หรือค้นหาข้อมูลในฟอรัมทางเทคนิค แต่คนส่วนใหญ่ไม่แน่ใจนักว่ามันทำอะไร หรือทำไมมันถึงจำเป็นสำหรับแอปต่างๆ เช่น แอปแกลเลอรี่รูปภาพ แอปเล่นเพลง และแอปจัดการไฟล์ เพื่อให้ทำงานได้อย่างราบรื่นมาดูกันให้ละเอียดขึ้น เพื่อให้คุณเข้าใจบทบาทของมันในประสบการณ์การใช้งาน Android ในชีวิตประจำวันของคุณ ไม่ว่าคุณจะต้องการทำความเข้าใจโทรศัพท์ของคุณให้ดีขึ้น หรือต้องการพัฒนาแอปหรือ ROM แบบกำหนดเองก็ตาม

MediaProvider คืออะไรและมีฟังก์ชั่นอะไรใน Android?

โมดูล Android MediaProvider คืออะไร?

El โมดูล MediaProvider เป็นหนึ่งในส่วนประกอบภายในของระบบแอนดรอยด์ที่มีหน้าที่รับผิดชอบในเรื่องต่อไปนี้ จัดการ จัดทำดัชนี และให้สิทธิ์การเข้าถึงไฟล์มัลติมีเดีย เช่น รูปภาพ วิดีโอ และเพลงที่จัดเก็บไว้ทั้งในหน่วยความจำภายในและอุปกรณ์ภายนอก (การ์ด SD, ไดรฟ์ USB ฯลฯ) มันไม่ใช่แอปธรรมดา แต่เป็น... ผู้ให้บริการเนื้อหาระบบ ซึ่งอาศัยฐานข้อมูลสาธารณะ MediaStore เพื่อให้แอปพลิเคชันอื่นๆ สามารถเข้าถึงเนื้อหามัลติมีเดียได้อย่างรวดเร็วและปลอดภัย

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

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

MediaProvider ยังทำงานร่วมกับ โมเดล การจัดเก็บข้อมูลแบบจำกัดขอบเขต (scoped storage model ) ในทางปฏิบัติ หมายความว่าโมดูลนี้บังคับใช้กฎความปลอดภัยเพื่อควบคุมว่าแอปใดบ้างที่สามารถดูและแก้ไขไฟล์เฉพาะได้ ตัวอย่างเช่นมันจะซ่อนหรือแก้ไขข้อมูลเมตาที่ละเอียดอ่อนเช่น ตำแหน่งที่ถ่ายภาพอย่างแม่นยำ เมื่อแอปไม่ต้องการข้อมูลนั้นหรือไม่มีสิทธิ์ที่จำเป็น

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

MediaProvider มีอิทธิพลต่อชีวิตประจำวันของคุณอย่างไร

MediaProvider ในการใช้งานประจำวัน

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

  • เปิดนิทรรศการภาพอย่างรวดเร็ว: เมื่อคุณเปิดแอปรูปภาพ แอปจะสอบถามข้อมูลจาก MediaStore และด้วยการจัดทำดัชนีไว้ล่วงหน้าของโมดูล ทำให้สามารถแสดงรูปภาพของคุณได้เกือบจะในทันที
  • ค้นหาตามวันที่ ประเภท หรืออัลบั้ม: แกลเลอรีหลายแห่งอนุญาตให้คุณกรองตามวิดีโอ ภาพเซลฟี่ ภาพหน้าจอ หรือวันที่ที่ระบุ ข้อมูลทั้งหมดนี้มาจาก... ข้อมูลเมตาที่จัดการโดย MediaProvider.
  • เครื่องเล่นเพลงและพอดแคสต์: รายชื่อที่จัดเรียงตามศิลปิน อัลบั้ม ประเภท หรือเพลย์ลิสต์นั้น อ้างอิงจากข้อมูลที่ MediaProvider รวบรวมและปรับให้เป็นมาตรฐานจากไฟล์เสียง
  • แอปส่งข้อความและโซเชียลมีเดีย: เมื่อคุณแชร์รูปภาพจาก WhatsApp, Telegram หรือ Instagram โดยใช้ตัวเลือกรูปภาพ รูปภาพเหล่านั้นจะถูกแชร์ไปยังที่อื่น การอ่านแคตตาล็อกของ MediaStore และการกรองตามประเภทของเนื้อหาที่ร้องขอ
  • ตัวจัดการไฟล์: เบราว์เซอร์บางตัวใช้การค้นหาใน MediaStore เพื่อแสดงรายการมัลติมีเดียทั้งหมดอย่างรวดเร็ว แทนที่จะต้องค้นหาผ่านโฟลเดอร์และไฟล์นับพันรายการด้วยตนเอง

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

วิวัฒนาการของ MediaProvider: จาก Android 10 ไปจนถึง Android 11 และสูงกว่านั้น

การอัปเดต MediaProvider

การเปลี่ยนแปลงครั้งใหญ่ในวิวัฒนาการของ MediaProvider เริ่มต้นขึ้นพร้อมกับการมาถึงของพื้นที่จัดเก็บข้อมูลแบบจำกัดขอบเขต (scoped storage)ใน Android 10 ตั้งแต่นั้นเป็นต้นมา ระบบได้จัดระเบียบวิธีการระบุไฟล์มีเดียและวิธีการแสดงไฟล์เหล่านั้นแก่แอปต่างๆ ใหม่ ทำให้ MediaProvider ต้องฉลาดขึ้นและปลอดภัยยิ่งขึ้นกว่าเดิม

การเปลี่ยนแปลงที่เริ่มใช้ตั้งแต่ Android 10 เป็นต้นไป

นับตั้งแต่เวอร์ชันนั้นมา Android ได้มีการปรับปรุงที่สำคัญหลายประการเกี่ยวกับการระบุและดึงข้อมูลจากไฟล์มัลติมีเดีย :

  • ระบบจะกำหนด ประเภทเนื้อหาไฟล์โดยใช้ส่วนแรกของประเภท MIMEตัวอย่างเช่น เขารู้ว่า image/png y image/x-newly-invented-format พวกเขาทั้งสอง ประเภทรูปภาพวิธีนี้ช่วยให้สามารถอธิบายสิทธิ์และพฤติกรรมที่เกี่ยวข้องสำหรับผู้ใช้ได้ดียิ่งขึ้น
  • เพื่อปรับปรุงความปลอดภัย อนุมานประเภท MIME จากนามสกุลไฟล์เท่านั้น จากไฟล์ โดยหลีกเลี่ยงเทคนิคการตรวจจับเนื้อหาที่อาจก่อให้เกิดช่องโหว่
  • การพิจารณาของ MIME นั้นอิงตาม เป็นการผสมผสานระหว่างตารางที่สืบทอดมาจาก Debian Linux และคำจำกัดความเฉพาะของ Androidส่งผลให้การตรวจจับรูปแบบที่ผิดปกติมีความน่าเชื่อถือและสม่ำเสมอมากขึ้น
  • MediaProvider มอบหมายการรวบรวมข้อมูลเมตาขั้นสูงให้กับเครื่องมือเฉพาะทาง: MediaMetadataRetriever สำหรับไฟล์ video/* y audio/*และ 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_ADDED y GENERATION_MODIFIED ที่อนุญาตให้แอป ตรวจจับการเปลี่ยนแปลงที่เกิดขึ้นนับตั้งแต่การซิงโครไนซ์ครั้งก่อนได้อย่างรวดเร็ว โดยไม่ต้องสแกนไลบรารีทั้งหมดใหม่อีกครั้ง
  • มีการเพิ่มหนึ่งรายการ API สาธารณะของ GROUP BY ซึ่งช่วยให้คุณจัดกลุ่มผลลัพธ์ตามอัลบั้ม วันที่ หรือข้อมูลเมตาอื่นๆ โดยไม่ต้องทำการประมวลผลเพิ่มเติมที่ซับซ้อนในแอป
  • มันได้รับการปรับปรุงแล้ว ExifInterface สำหรับ ดึงข้อมูลเมตาจากคอนเทนเนอร์ PNG และ WebPโดยขยายจำนวนรูปแบบภาพที่สามารถประมวลผลด้วยวิธีการขั้นสูง
  • SystemUI เริ่มเขียนข้อมูลเมตา DateTimeOriginal ในภาพหน้าจอ เพื่อให้ MediaProvider สามารถทำได้ เพื่อจัดระเบียบและแสดงภาพประเภทนี้ให้ดียิ่งขึ้น ภายในหอศิลป์

ในแง่ของสถาปัตยกรรม MediaProvider ได้ถูกย้ายไปใช้ รูปแบบ APK-in-APEXซึ่งหมายความว่าโค้ด Java จะถูกบรรจุเป็น APK ภายในคอนเทนเนอร์ APEX ระดับระบบ ข้อดีคือโมดูลนี้สามารถโหลดได้เร็วมากในกระบวนการบูตแม้กระทั่งก่อนส่วนอื่นๆ ของเฟรมเวิร์ก และยังได้รับประโยชน์จากการอัปเดตอย่างรวดเร็วผ่าน Google Play อีกด้วย

โมดูล MediaProvider และ Mainline: การอัปเดตแบบสแตนด์อโลนบน Android

โมดูลหลักใน 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

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

แอปพลิเคชันของผู้ใช้ไม่ได้สื่อสารโดยตรงกับ 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_REVIEW y MediaStore.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_FAVORITE y QUERY_ARG_MATCH_TRASHEDแอปต่างๆ สามารถรับได้ เฉพาะรายการที่ทำเครื่องหมายว่าเป็นรายการโปรดเท่านั้น หรือพวกที่อยู่ในถังขยะ
  • การตรวจจับการเปลี่ยนแปลงแบบเพิ่มขึ้น: คอลัมน์เช่น GENERATION_ADDED y GENERATION_MODIFIED ฟังก์ชันนี้ช่วยให้คุณเห็นได้อย่างรวดเร็วว่ามีการเพิ่มหรือแก้ไของค์ประกอบใดบ้างนับตั้งแต่การซิงโครไนซ์ครั้งก่อน ซึ่งเป็นสิ่งสำคัญสำหรับแอปสำรองข้อมูลหรือแกลเลอรีขั้นสูง
  • การดำเนินการจำนวนมากที่ผู้ใช้ควบคุม: วิธีการต่างๆ เช่น createDeleteRequest(), createTrashRequest(), createFavoriteRequest() o createWriteRequest() อนุญาตแอป เสนอการเปลี่ยนแปลงชุดงานแต่ระบบจะแสดงกล่องโต้ตอบยืนยันให้ผู้ใช้เห็น เพื่อให้ผู้ใช้มีสิทธิ์ตัดสินใจขั้นสุดท้าย
  • การอ่านและการเขียนข้อมูล EXIF: ตลอด ExifInterfaceแอปสามารถอ่านข้อมูลต่างๆ เช่น ทิศทางการถ่ายภาพ เวลาที่ถ่ายภาพ รุ่นกล้อง ตำแหน่งที่ตั้ง (หากมีและผู้ใช้อนุญาต) และข้อมูลเมตาอื่นๆ ซึ่งมีความสำคัญอย่างยิ่งสำหรับ หมุนภาพให้ถูกต้อง เรียงลำดับตามเวลา หรือแสดงข้อมูลการถ่ายภาพ.

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

ผู้ให้บริการสื่อและพื้นที่จัดเก็บข้อมูลบนคลาวด์

ด้วยการมาถึงของ โปรแกรม เลือกภาพถ่ายสมัยใหม่และผู้ให้บริการสื่อบนระบบคลาวด์บทบาทของผู้ให้บริการสื่อจึงมีความสำคัญมากยิ่งขึ้นในกระบวนการเลือกภาพถ่ายและวิดีโอ

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

ในสถานการณ์นี้ MediaProvider และ Photo Picker ทำงานร่วมกันอย่างลงตัว:

  1. ระบบจะเริ่มต้นใช้งานผู้ให้บริการคลาวด์ที่ต้องการและทำการซิงโครไนซ์เป็นระยะ เมตาดาต้ามัลติมีเดีย โดยใช้ระบบเลือกรูปภาพเบื้องหลัง
  2. เมื่อแอปเปิดใช้งานตัวเลือกรูปภาพโดยใช้ Intent ต่างๆ เช่น ACTION_PICK_IMAGES o ACTION_GET_CONTENTตัวเลือก รวมเข้าเป็นตารางเดียว องค์ประกอบภายในที่จัดหาโดย MediaProvider และองค์ประกอบภายนอกที่จัดหาโดย CloudMediaProvider
  3. ขณะที่ผู้ใช้เลื่อนหน้าจอ ตัวเลือกจะแสดงข้อความแจ้งเตือน ภาพขนาดย่อที่ปรับให้เหมาะสม เพื่ออำนวยความสะดวกให้แก่ซัพพลายเออร์ ทำให้การขนส่งเป็นไปอย่างรวดเร็วและมีประสิทธิภาพ
  4. เมื่อทำการเลือกเสร็จสิ้น หากเลือกเนื้อหาบนคลาวด์ ระบบจะสร้าง... 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/* y audio/*ยังคงพึ่งพาต่อไป 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

เมื่อปรับแต่ง MediaProvider ผู้ผลิตอุปกรณ์ (OEM) ต้องคำนึงถึงความสัมพันธ์ทางเทคนิค หลายประการ เพื่อให้แน่ใจว่าทุกอย่างยังคงทำงานได้อย่างถูกต้อง:

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

นอกจากนี้ ในบริบทของการแปลงรหัสวิดีโอ อุปกรณ์ต้องมีคุณสมบัติตรงตามข้อกำหนดฮาร์ดแวร์ขั้นต่ำ บางประการ ได้แก่ การรองรับการเข้ารหัส HEVC ในกล้อง การมีประสิทธิภาพในการอ่านและเขียนข้อมูลในหน่วยเก็บข้อมูลที่เพียงพอ และตัวแปลงสัญญาณที่สามารถประมวลผลได้ในอัตราสูงในงานแปลงรหัส

การทดสอบ การวินิจฉัย และข้อผิดพลาดทั่วไปของ MediaProvider

ปัญหาทั่วไปเกี่ยวกับ MediaProvider

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

ในระบบนิเวศของ Android มีการทดสอบอัตโนมัติ หลายอย่าง เพื่อตรวจสอบการทำงานที่ถูกต้อง:

  • CtsProviderTestCases: ชุดทดสอบของ ชุดทดสอบความเข้ากันได้ ซึ่งเป็นการตรวจสอบความถูกต้องของพฤติกรรมของ API สาธารณะของ MediaStore เทียบกับ MediaProvider
  • MediaProviderTests: การทดสอบภายในมุ่งเน้นไปที่พฤติกรรมเฉพาะของโมดูลและส่วนประกอบต่างๆ

นักพัฒนาหรือช่างเทคนิคสามารถเรียกใช้ชุดทดสอบเหล่านี้ได้ด้วยคำสั่งต่างๆ เช่น:

atest --test-mapping packages/providers/MediaProvider

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

  • ตรวจสอบไฟล์ สถานะทางกายภาพของความทรงจำภายในและภายนอก (ฟอร์แมตหรือเปลี่ยนการ์ดหากพบข้อผิดพลาด)
  • การบำรุงรักษาระบบและ โมดูล Mainline ที่ได้รับการอัปเดต จาก Google Play เพื่อรับคำแก้ไข
  • ตรวจสอบว่ามีแอปใดกำลังสร้างอยู่หรือไม่ ไฟล์ที่เสียหายหรือไฟล์ที่มีเมตาเดตาผิดปกติ ซึ่งเป็นสาเหตุของความล้มเหลวในการจัดทำดัชนี

เครื่องมือและยูทิลิตี้ที่เกี่ยวข้องกับ MediaProvider

เครื่องมือสำหรับดูโมดูล Mainline

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการอัปเดต MediaProvider หรือโมดูล Mainline ที่คุณติดตั้งไว้ คุณสามารถใช้เครื่องมือบางอย่างได้:

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

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

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


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google