
Trong những năm gần đây, Android đã phát triển đáng kể về quản lý tệp và bảo mật hệ thống. Một trong những yếu tố ít được giải thích nhất—nhưng lại rất quan trọng đối với việc lưu trữ phù hợp và quyền riêng tư của người dùng—là Nhà cung cấp phương tiện truyền thôngNếu bạn từng thắc mắc thành phần đó là gì, tại sao đôi khi nó xuất hiện trong các thông báo hệ thống, những cải tiến mà nó mang lại trong mỗi phiên bản Android, hoặc nó ảnh hưởng đến điện thoại của bạn như thế nào, chúng tôi sẽ giải thích chi tiết ở đây.
Bạn dễ dàng bắt gặp cái tên MediaProvider khi điều hướng qua cài đặt điện thoại di động, kiểm tra dung lượng lưu trữ hoặc tham khảo các diễn đàn kỹ thuật, nhưng hầu hết mọi người không hiểu rõ chính xác nó làm gì hoặc tại sao nó lại quan trọng. Điều này rất cần thiết để các ứng dụng như thư viện ảnh, trình phát nhạc hoặc trình quản lý tập tin hoạt động trơn tru.Hãy cùng tìm hiểu tổng quan chi tiết để bạn hiểu rõ mọi đóng góp của nó vào cuộc sống hàng ngày với Android, cho dù bạn chỉ muốn hiểu rõ hơn về điện thoại di động của mình hay đang phát triển các ứng dụng hoặc ROM tùy chỉnh.
MediaProvider là gì và chức năng của nó trong Android là gì?
El Mô-đun MediaProvider Đây là một trong những thành phần nội bộ của hệ thống Android chịu trách nhiệm cho việc... quản lý, lập chỉ mục và cung cấp quyền truy cập vào các tệp đa phương tiện. Chẳng hạn như ảnh, video và nhạc được lưu trữ cả trên bộ nhớ trong và các thiết bị lưu trữ ngoài (thẻ SD, ổ USB, v.v.). Đây không phải là một ứng dụng thông thường, mà là một ứng dụng... Nhà cung cấp nội dung hệ thống dựa trên cơ sở dữ liệu công cộng MediaStore để các ứng dụng khác có thể truy cập nội dung đa phương tiện một cách nhanh chóng và an toàn.
Nhiệm vụ chính của nó bao gồm: phân tích các tập tin, trích xuất siêu dữ liệu của chúng và lập chỉ mục cho chúng. trong các bảng được tối ưu hóa. Siêu dữ liệu này bao gồm các yếu tố như loại tệp, thời lượng video hoặc âm thanh, độ phân giải hình ảnh, ngày chụp, kích thước, vị trí lưu trữ, hoặc trong một số trường hợp, dữ liệu EXIF nâng cao trong số các bức ảnh.
Nhờ mô-đun này, Các ứng dụng có thể hiển thị toàn bộ thư viện của bạn mà không cần phải tự mình điều hướng qua toàn bộ cấu trúc thư mục.Ví dụ, một thư viện ảnh không cần phải quét mọi thư mục: nó gửi một truy vấn đến MediaStore và trong vài mili giây sẽ nhận được một danh sách phân trang của tất cả các hình ảnh, được sắp xếp và lọc theo yêu cầu. Điều này Nó giúp cải thiện đáng kể hiệu năng và mức tiêu thụ pin. so với việc quét trực tiếp hệ thống tập tin.
MediaProvider cũng tích hợp với mô hình của lưu trữ với khả năng tiếp cận (lưu trữ phạm vi). Trên thực tế, điều này có nghĩa là mô-đun áp dụng quy định an ninh Để kiểm soát ứng dụng nào có thể xem và chỉnh sửa các tệp nhất định. Ví dụ: che giấu hoặc chỉnh sửa siêu dữ liệu nhạy cảm Ví dụ như vị trí chính xác nơi chụp ảnh khi ứng dụng không cần dữ liệu đó hoặc không có quyền truy cập phù hợp.
Một khía cạnh quan trọng khác là MediaProvider là một phần của các mô-đun được gọi là Mainline. (hoặc các mô-đun hệ thống có thể nâng cấp), cho phép Google và các nhà sản xuất cập nhật ứng dụng độc lập thông qua Google Play.Bằng cách này, các lỗ hổng bảo mật được khắc phục, khả năng tương thích với các định dạng tệp mới được bổ sung và các tính năng được tinh chỉnh mà không cần chờ đợi bản cập nhật hệ thống hoàn chỉnh.
MediaProvider ảnh hưởng đến cuộc sống hàng ngày của bạn như thế nào?
Mặc dù bạn không thể nhìn thấy, MediaProvider vẫn liên tục hoạt động trong nền. Một số ví dụ rõ ràng về cách nó ảnh hưởng đến trải nghiệm hàng ngày của bạn là:
- Khai trương triển lãm nhanh: Khi bạn mở ứng dụng ảnh, nó sẽ truy vấn MediaStore và nhờ vào việc lập chỉ mục trước đó của mô-đun, có thể hiển thị hình ảnh của bạn gần như ngay lập tức.
- Tìm kiếm theo ngày, loại hoặc album: Nhiều thư viện ảnh cho phép bạn lọc theo video, ảnh tự chụp, ảnh chụp màn hình hoặc ngày cụ thể. Tất cả thông tin này đều đến từ... Siêu dữ liệu được quản lý bởi MediaProvider.
- Trình phát nhạc và podcast: Các danh sách theo nghệ sĩ, album, thể loại hoặc danh sách phát được dựa trên dữ liệu mà MediaProvider đã thu thập và chuẩn hóa từ các tệp âm thanh.
- Ứng dụng nhắn tin và mạng xã hội: Khi bạn chia sẻ ảnh từ WhatsApp, Telegram hoặc Instagram bằng trình chọn ảnh, thực chất chúng đang được chia sẻ. đọc danh mục MediaStore và lọc theo loại nội dung được yêu cầu.
- Trình quản lý tệp: Một số trình duyệt sử dụng truy vấn MediaStore để nhanh chóng liệt kê tất cả các nội dung đa phương tiện, thay vì phải tự mình duyệt qua hàng nghìn thư mục và tập tin.
Ngay cả những tác vụ ít được chú ý hơn, chẳng hạn như ảnh chụp bằng máy ảnh xuất hiện trong thư viện hoặc đám mây chỉ trong vài giây, thường được phối hợp với MediaProvider, đơn vị chịu trách nhiệm cho việc này. Đăng ký mục mới, trích xuất siêu dữ liệu của mục đó và thông báo về các thay đổi. cho các ứng dụng quan tâm.
Sự phát triển của MediaProvider: Từ Android 10 đến Android 11 và hơn thế nữa

Bước tiến lớn trong sự phát triển của MediaProvider bắt đầu với sự xuất hiện của lưu trữ với khả năng tiếp cận Kể từ Android 10, hệ thống đã tổ chức lại cách nhận dạng và cách hiển thị các tệp đa phương tiện cho ứng dụng, buộc MediaProvider phải trở nên thông minh và an toàn hơn nhiều.
Những thay đổi được giới thiệu bắt đầu từ Android 10
Kể từ phiên bản đó, Android đã giới thiệu một số cải tiến quan trọng liên quan đến Nhận dạng và trích xuất dữ liệu từ các tệp đa phương tiện:
- Hệ thống xác định loại nội dung tệp sử dụng phần đầu tiên của loại MIMEVí dụ, anh ấy biết rằng
image/pngyimage/x-newly-invented-formatHọ đều các loại hình ảnhĐiều này cho phép mô tả rõ hơn về các quyền hạn và hành vi liên quan của người dùng. - Để cải thiện bảo mật, Chỉ có thể suy ra loại MIME từ phần mở rộng. trích xuất dữ liệu từ tập tin, tránh các kỹ thuật phát hiện nội dung có thể tạo ra lỗ hổng bảo mật.
- Quyết định của MIME dựa trên... sự kết hợp của các bảng được kế thừa từ Debian Linux và các định nghĩa riêng của Android.Điều này giúp phát hiện các định dạng bất thường một cách đáng tin cậy và nhất quán hơn nhiều.
- MediaProvider ủy thác việc thu thập siêu dữ liệu nâng cao cho các công cụ chuyên dụng:
MediaMetadataRetrievercho các tập tinvideo/*yaudio/*, VàExifInterfacecho các tệpimage/*, do đó thu được thời lượng, tốc độ bit, độ phân giải, hướng, thông tin máy ảnh và các thông tin hữu ích khác.
Những thay đổi này cho phép các ứng dụng nhận được siêu dữ liệu đáng tin cậy và được tiêu chuẩn hóa hơnĐồng thời, các biện pháp an ninh được tăng cường và nền tảng đã được đặt ra cho hệ thống cấp phép truy cập tinh vi mà chúng ta biết ngày nay.
Những cải tiến được giới thiệu bắt đầu từ Android 11.
Với Android 11, MediaProvider đã được xây dựng dựa trên những nền tảng này và tiến thêm một bước nữa trong việc phát triển. tổ chức nội dung, hiệu suất và khả năng của ứng dụng:
- Đã được thực hiện những cải tiến sâu sắc trong việc lập chỉ mục bao gồm các tập tin và siêu dữ liệu. Giờ đây, mô-đun này sẽ đối chiếu siêu dữ liệu có sẵn với những gì API MediaStore cung cấp, giúp đồng bộ hóa tốt hơn những gì được lưu trữ nội bộ với những gì ứng dụng có thể truy vấn.
- Các cột mới đã được thêm vào cơ sở dữ liệu, chẳng hạn như:
is_favoritevà lập luận về sự cần thiết của việc tham vấnQUERY_ARG_MATCH_FAVORITEĐiều này cho phép các ứng dụng dạng thư viện ảnh. Lọc nhanh nội dung đã đánh dấu yêu thích bởi người dùng. - MediaProvider bắt đầu chỉ mục không gian màu siêu dữ liệuĐây là yếu tố cơ bản để xử lý nội dung HDR, cho ra những bức ảnh chân thực hơn và hiển thị chính xác hơn trên các màn hình tiên tiến.
- Cột này đã được giới thiệu
is_trashedvà đối sốQUERY_ARG_MATCH_TRASHEDđể phân biệt rõ ràng các tệp tin nằm trong thùng rácCho phép các thư viện ảnh quản lý thùng rác đó một cách tự nhiên. - đã xuất hiện API mới cho các thao tác hàng loạt trên một số thành phần có hộp thoại xác nhận của người dùng duy nhất, bao gồm:
createDeleteRequest()Xóa nhiều tập tin cùng một lúc.createFavoriteRequest()Đánh dấu hoặc bỏ đánh dấu nhiều mục yêu thích chỉ bằng một thao tác.createTrashRequest()Gửi hàng loạt tập tin trực tiếp vào thùng rác.createWriteRequest()Yêu cầu quyền ghi chép trên nhiều mục.
- Các cột mới đã được thêm vào, ví dụ như...
GENERATION_ADDEDyGENERATION_MODIFIEDcho phép các ứng dụng Nhanh chóng phát hiện những thay đổi kể từ lần đồng bộ hóa trước. mà không cần phải quét lại toàn bộ thư viện. - Một cái đã được thêm vào. API công khai của
GROUP BYĐiều này cho phép bạn nhóm kết quả theo album, ngày hoặc siêu dữ liệu khác mà không cần phải thực hiện các bước xử lý hậu kỳ phức tạp trong ứng dụng. - Nó đã được cải thiện
ExifInterfacepara Trích xuất siêu dữ liệu từ các định dạng PNG và WebP., mở rộng số lượng định dạng hình ảnh được xử lý theo cách tiên tiến. - SystemUI đã bắt đầu ghi siêu dữ liệu.
DateTimeOriginaltrong ảnh chụp màn hình, để MediaProvider có thể để sắp xếp và hiển thị các loại hình ảnh này một cách tốt hơn. bên trong các phòng trưng bày.
Về mặt kiến trúc, MediaProvider đã chuyển sang một định dạng khác. APK trong APEXĐiều này có nghĩa là mã Java được đóng gói dưới dạng tệp APK bên trong vùng chứa APEX cấp hệ thống. Ưu điểm là mô-đun có thể sạc rất sớm ngay từ đầu, thậm chí trước nhiều phần của khuôn khổ, và đồng thời hưởng lợi từ các bản cập nhật nhanh chóng thông qua Google Play.
MediaProvider và Mainline Modules: Cập nhật độc lập trên Android

Một trong những chiến lược chính của Google để chống lại sự phân mảnh và cung cấp các thiết bị an toàn hơn là việc tạo ra... Mô-đun chínhĐây là các thành phần hệ thống có thể được cập nhật độc lập với Google Play, không cần sự can thiệp trực tiếp từ nhà sản xuất hoặc phải cài đặt bản cập nhật OTA đầy đủ.
Ngoài MediaProvider, các mô-đun này còn bao gồm những mô-đun khác như... ART (môi trường thực thi ứng dụng), Đồng hóa (thư viện mật mã), Phương tiện truyền thông, Codec phương tiện, Wi-Fi, Buộc và nhiều hơn thế nữa. Cùng nhau, chúng cho phép Android Khắc phục các lỗi nghiêm trọng, cải thiện hiệu năng và bổ sung thêm tính năng. mà không hoàn toàn phụ thuộc vào lịch trình của từng nhà sản xuất.
Điều quan trọng cần làm rõ là, mặc dù kiến trúc mô-đun bắt đầu được giới thiệu từ Android 10, Cụ thể, MediaProvider được hưởng khả năng nâng cấp lên Mainline bắt đầu từ Android 11.Nhờ vậy, nếu phát hiện ra lỗ hổng bảo mật, sự không tương thích với các định dạng đa phương tiện mới hoặc vấn đề về hiệu năng trong quá trình lập chỉ mục, Google có thể vá lỗi và tung ra bản cập nhật. Giống như bất kỳ ứng dụng nào khác trên Google Play. Bằng cách này, điện thoại của bạn sẽ luôn được kết nối. an toàn và nhất quán Tương thích với phần còn lại của hệ sinh thái, ngay cả khi nhà sản xuất của bạn không phát hành các phiên bản Android mới nhanh chóng.
Có những mô-đun Mainline nào khác và MediaProvider liên quan đến chúng như thế nào?

MediaProvider chỉ là một trong nhiều Mô-đun chính Nhằm mục đích làm cho hệ thống trở nên linh hoạt hơn, an toàn hơn và dễ nâng cấp hơn. Một số yếu tố quan trọng nhất, đặc biệt là những yếu tố liên quan đến trải nghiệm đa phương tiện và mạng, bao gồm:
- Media: Nó đảm nhiệm việc xử lý các tệp đa phương tiện trên thiết bị di động, bao gồm các dịch vụ phát lại, ghi hình và quản lý luồng.
- Bộ giải mã phương tiện: Nó giúp cập nhật các codec âm thanh và video, cho phép cải thiện khả năng tương thích và bảo mật trong quá trình giải mã và mã hóa mà không cần can thiệp vào toàn bộ hệ thống.
- NGHỆ THUẬT: Nó quản lý môi trường chạy ứng dụng (biên dịch, tối ưu hóa mã byte, v.v.). Những cải tiến trong mô-đun này ảnh hưởng trực tiếp đến... hiệu suất ứng dụng.
- Mã hóa: Nó cập nhật phần mã hóa của hệ thống, vốn rất quan trọng cho các kết nối an toàn, chứng chỉ và mã hóa.
- Wifi: Nó chứa logic kết nối Wi-Fi, cho phép ứng dụng của Cải thiện tính ổn định, khả năng tương thích và bảo mật. mà không cần bản cập nhật OTA đầy đủ.
- Chia sẻ kết nối: Kiểm soát việc chia sẻ kết nối Wi-Fi, USB, Bluetooth hoặc Ethernet thông qua thiết bị di động của bạn.
- Bộ điều khiển quyền: Cập nhật mô-đun quản lý quyền và các yếu tố giao diện bảo mật cho người dùng.
MediaProvider có liên quan mật thiết đến các mô-đun của Phương tiện truyền thông y Codec phương tiệnVì những codec này chịu trách nhiệm giải mã và xử lý nội dung mà MediaProvider lập chỉ mục. Khi các định dạng mới xuất hiện hoặc các codec hiện có được điều chỉnh, MediaProvider có thể bắt đầu... nhận biết và lập danh mục các định dạng đó Các định dạng hiện đại hơn (ví dụ: các biến thể mới của HEVC, HDR hoặc codec âm thanh) mà không cần cập nhật toàn bộ Android, miễn là các mô-đun đa phương tiện còn lại cũng đã được cập nhật.
Để tìm hiểu xem thiết bị di động của bạn hỗ trợ những mô-đun Mainline nào, bạn có thể sử dụng các công cụ như... ứng dụng Mainline Updater miễn phíHiển thị các mô-đun hiện có và, với một nút bấm, sẽ đưa bạn đến phần đó. Cập nhật hệ thống Google PlayTại đó, bạn sẽ thấy liệu có bản vá nào đang chờ xử lý ảnh hưởng đến MediaProvider hay không, cùng với các thành phần khác.
Nhà cung cấp phương tiện, bảo mật quyền riêng tư và lưu trữ

Một trong những những tiến bộ gần đây quan trọng Liên quan đến MediaProvider là việc bảo vệ quyền riêng tư của người dùngTrước đây, nhiều ứng dụng có thể truy cập toàn bộ thư mục trên bộ nhớ ngoài và đọc siêu dữ liệu rất chi tiết — bao gồm cả vị trí GPS được nhúng trong ảnh — mà không cần hệ thống tinh chỉnh.
Với sự kết hợp của lưu trữ phạm vi + MediaProvider + MediaStoreMọi thứ đã thay đổi:
- Các ứng dụng có truy cập hạn chế Đối với ảnh, video và âm thanh. Ví dụ, một ứng dụng chỉnh sửa ảnh có thể truy cập vào một hình ảnh cụ thể do người dùng chọn thông qua... bộ chọn ảnhNhưng không phải những bức ảnh còn lại trong bộ sưu tập của bạn.
- MediaProvider có thể Chỉnh sửa hoặc hạn chế siêu dữ liệu nhạy cảmVí dụ như vị trí chính xác của điểm chụp hoặc thông tin camera nội bộ, nếu ứng dụng không cần dữ liệu đó.
- Giấy phép ngày càng trở nên quan trọng hơn. dạng hạt và trong suốtVấn đề không còn là cho phép hay từ chối quyền truy cập đầy đủ vào bộ nhớ, mà là cấp quyền truy cập vào... các loại nội dung cụ thể (hình ảnh, video, âm thanh) hoặc thậm chí là các tệp do người dùng lựa chọn.
- Khả năng bảo vệ chống lại các ứng dụng độc hại cố gắng quét bộ nhớ để tìm kiếm tài liệu riêng tư hoặc nội dung nhạy cảm được tăng cường. MediaProvider hoạt động như... lọc và trọng tài Những gì có thể nhìn thấy hoặc chỉnh sửa được.
Tất cả những điều này được kết hợp với những khả năng trải nghiệm nâng cao, chẳng hạn như Các nhà cung cấp Photo Picker và dịch vụ lưu trữ đám mây mới nhấtTrong đó, MediaProvider cũng là một phần trong luồng dữ liệu.
API và ví dụ sử dụng: Ứng dụng tương tác với MediaProvider như thế nào

Các ứng dụng người dùng không giao tiếp trực tiếp với MediaProvider, mà thông qua đó. MediaStoreAPI công cộng đóng vai trò như một giao diện. API này cung cấp một hệ sinh thái hoàn chỉnh của... ý định, hằng số và phương thức truy vấn Để truy cập các tệp đa phương tiện theo cách chuẩn hóa.
Nỗ lực thu thập và lựa chọn nội dung
Trong số những mục đích nổi bật nhất tận dụng MediaStore (và, mở rộng ra, MediaProvider) là:
MediaStore.ACTION_IMAGE_CAPTURE: Tính năng này cho phép bạn mở camera để chụp ảnh và gửi lại ảnh đó cho ứng dụng gọi điện.MediaStore.ACTION_IMAGE_CAPTURE_SECURE: Tương tự như phiên bản trước, nhưng được thiết kế cho môi trường mà thiết bị được bảo vệ (mã PIN, hình vẽ, sinh trắc học) và cần duy trì bối cảnh bảo mật.MediaStore.ACTION_VIDEO_CAPTURE: Khởi động camera ở chế độ quay video và trả kết quả về ứng dụng gọi.MediaStore.ACTION_PICK_IMAGES: mở bộ chọn ảnh Hệ điều hành Android hiện đại cung cấp trải nghiệm thống nhất khi lựa chọn hình ảnh và video từ nhiều nguồn khác nhau (bộ nhớ cục bộ, đám mây, v.v.).MediaStore.ACTION_PICK_IMAGES_SETTINGS: Điều này dẫn đến các thiết lập liên quan đến trình chọn ảnh và nhà cung cấp phương tiện.MediaStore.ACTION_REVIEWyMediaStore.ACTION_REVIEW_SECURE: Chúng cho phép bạn xem lại hoặc xem trước nội dung đa phương tiện mới được ghi lại trong một môi trường được kiểm soát.
Ngoài những mục đích này, MediaStore còn định nghĩa một danh sách dài các mục đích khác. các phần bổ sung và hằng số MediaProvider tôn trọng và sử dụng các quy tắc cụ thể mà nó áp dụng. Một số ví dụ:
EXTRA_DURATION_LIMIT: Thời gian ghi hình tối đa được phép khi quay video.EXTRA_SIZE_LIMIT: Kích thước tệp đầu ra tối đa.EXTRA_OUTPUT: URI nơi hình ảnh hoặc video kết quả sẽ được lưu trữ.EXTRA_PICK_IMAGES_MAX: Số lượng tối đa các mục mà người dùng có thể chọn trong một phiên chọn.
Các truy vấn nâng cao tới MediaStore
Các ứng dụng cần đọc thư viện phương tiện sử dụng Yêu cầu thông tin từ MediaStore Với nhiều tham số và bộ lọc khác nhau. Một số chức năng được MediaProvider cung cấp thông qua MediaStore là:
- Lọc theo mục yêu thích và mục đã xóa: sử dụng các đối số
QUERY_ARG_MATCH_FAVORITEyQUERY_ARG_MATCH_TRASHEDCác ứng dụng có thể nhận được Chỉ những mục đã được đánh dấu là mục yêu thích hoặc những thứ nằm trong thùng rác. - Phát hiện thay đổi gia tăng: các cột như
GENERATION_ADDEDyGENERATION_MODIFIEDChúng cho phép bạn nhanh chóng xem những yếu tố nào đã được thêm hoặc sửa đổi kể từ lần đồng bộ hóa trước đó, điều này rất quan trọng đối với các ứng dụng sao lưu hoặc thư viện ảnh nâng cao. - Các thao tác hàng loạt do người dùng kiểm soát: các phương pháp như
createDeleteRequest(),createTrashRequest(),createFavoriteRequest()ocreateWriteRequest()cho phép ứng dụng đề xuất thay đổi hàng loạtNhưng chính hệ thống sẽ hiển thị hộp thoại xác nhận cho người dùng để họ có quyền quyết định cuối cùng. - Đọc và ghi EXIF: xuyên qua
ExifInterfaceCác ứng dụng có thể đọc các trường như hướng ảnh, thời gian chụp, kiểu máy ảnh, vị trí (nếu có và được người dùng cho phép) và các siêu dữ liệu khác. Điều này rất quan trọng đối với Xoay ảnh đúng hướng, sắp xếp ảnh theo thứ tự thời gian hoặc hiển thị dữ liệu chụp..
MediaProvider, lưu trữ đám mây và Photo Picker

Với sự xuất hiện của Công cụ chọn ảnh hiện đại và các nhà cung cấp nội dung đa phương tiện dựa trên đám mâyVai trò của MediaProvider ngày càng trở nên quan trọng hơn trong quy trình lựa chọn ảnh và video.
Android cho phép một số ứng dụng nhất định, thường là các dịch vụ lưu trữ ảnh đám mây do nhà sản xuất chỉ định, hoạt động như... CloudMediaProviderCác ứng dụng này cung cấp nội dung được lưu trữ trên đám mây Thêm tùy chọn chọn ảnh để người dùng có thể chọn không chỉ các tệp ảnh cục bộ mà còn cả các tệp ảnh được lưu trên các dịch vụ từ xa.
Trong trường hợp này, MediaProvider và Photo Picker hoạt động song song với nhau:
- Hệ thống khởi tạo nhà cung cấp dịch vụ đám mây ưu tiên và đồng bộ hóa định kỳ. siêu dữ liệu đa phương tiện với hệ thống chọn ảnh phía máy chủ.
- Khi một ứng dụng khởi chạy Trình chọn ảnh bằng cách sử dụng các ý định như
ACTION_PICK_IMAGESoACTION_GET_CONTENTbộ chọn kết hợp thành một lưới duy nhất các thành phần cục bộ do MediaProvider cung cấp và các thành phần từ xa do CloudMediaProvider cung cấp. - Khi người dùng cuộn xuống, bộ chọn sẽ hiển thị lời nhắc. hình thu nhỏ được tối ưu hóa cho các nhà cung cấp để việc bốc xếp được nhanh chóng và hiệu quả.
- Sau khi hoàn tất quá trình lựa chọn, nếu nội dung đám mây được chọn, hệ thống sẽ tạo ra... URI an toàn Và MediaProvider, thông qua FUSE và các lớp khác, điều phối việc truy cập vào dữ liệu thực, luôn luôn bảo vệ quyền truy cập và quyền riêng tư.
Về phần mình, CloudMediaProvider cung cấp các phương thức như sau: onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()Trình chọn ảnh sử dụng các phương thức này để liệt kê các mục, album, nội dung đã xóa và để mở cả bản xem trước lẫn tệp đầy đủ. Mặc dù các phương thức này được triển khai bên ngoài MediaProvider, mô-đun đa phương tiện của hệ thống tích hợp với chúng để cung cấp... trải nghiệm nhất quán khi truy cập phương tiện cục bộ và trên đám mây.
MediaProvider và khả năng chuyển mã video tương thích

Một chức năng nâng cao khác mà MediaProvider đóng vai trò quan trọng là... chuyển mã nội dung đa phương tiện tương thíchTính năng này cho phép các thiết bị sử dụng các định dạng video hiện đại và hiệu quả—chẳng hạn như HEVC hoặc một số cấu hình HDR nhất định—mà không làm mất tính tương thích với các ứng dụng cũ chỉ hiểu các định dạng cổ điển như AVC (H.264).
Cơ chế hoạt động như sau:
- Các nhà sản xuất và người dùng có thể cấu hình camera để ghi âm ở định dạng HEVC theo mặc định hoặc các định dạng khác tiết kiệm không gian và băng thông hơn.
- Khi một ứng dụng mà Không hỗ trợ HEVC Khi bạn cố gắng mở video thông qua MediaStore và MediaProvider, hệ thống có thể gặp lỗi. chặn việc đọc tệp nhờ việc sử dụng FUSE (Filesystem in Userspace).
- Nếu phát hiện ứng dụng không hỗ trợ định dạng đó, MediaProvider sẽ hỗ trợ cùng với... Dịch vụ chuyển mã phương tiệnQuá trình này khởi động việc chuyển đổi ngầm để tạo ra một phiên bản ở định dạng AVC hoặc định dạng tương thích khác.
- Ứng dụng nhận được một bộ mô tả tệp trỏ đến phiên bản đã được chuyển mã (hoặc phiên bản gốc, nếu ứng dụng hỗ trợ định dạng đó), theo cách hoàn toàn minh bạch đối với nhà phát triển.
Quá trình chuyển mã này được điều chỉnh bởi giới hạn thời gian và nguồn lực Để ngăn chặn việc lạm dụng: ví dụ, chỉ những video có độ dài nhất định mới được xử lý, và số phiên liên tiếp hoặc tổng thời gian xử lý cho mỗi ứng dụng bị giới hạn. Nếu vượt quá các giới hạn này, hệ thống sẽ trả về tệp gốc chưa được xử lý.
Để đạt được điều này, kiến trúc bao gồm một số thành phần:
- MediaTranscodingManager: API hệ thống cho phép MediaProvider và các thành phần khác của framework giao tiếp với dịch vụ chuyển mã.
- Dịch vụ chuyển mã phương tiện: Dịch vụ quản lý hàng đợi chuyển mã, các phiên hoạt động và phân bổ tài nguyên codec.
- MediaTranscoder: Thư viện gốc thực hiện việc chuyển đổi giữa các định dạng, dựa trên... MediaCodec và trong các tiện ích bổ sung OEM khả thi cho các thao tác như chuyển đổi HDR → SDR.
MediaProvider nằm ở trung tâm của toàn bộ quy trình này: nó là mô-đun mà... chặn nỗ lực đọc các tệpNó quyết định xem việc chuyển mã có cần thiết hay không dựa trên khả năng của ứng dụng, và cuối cùng cung cấp bộ mô tả chính xác, cho tệp gốc hoặc tệp đã được chuyển mã.
Tùy chỉnh và mở rộng: MediaProvider dành cho nhà phát triển và nhà sản xuất
Một trong những khía cạnh mạnh mẽ nhất—và ít được biết đến nhất—của MediaProvider là khả năng cá nhân hóa hành vi của bạnPhần này đặc biệt đáng quan tâm đến các nhà phát triển ROM tùy chỉnh, OEM và nhà sản xuấtNhưng điều này cũng giúp hiểu tại sao một số thiết bị lại hoạt động khác nhau với các định dạng hoặc đường dẫn lưu trữ nhất định.
Định dạng phương tiện tùy chỉnh
Các nhà sản xuất có thể thêm hỗ trợ cho các định dạng phương tiện độc quyền hoặc không phổ biếnĐối với mỗi loại hình mới, họ phải:
- Đăng ký một phần mở rộng tệp duy nhất và liên kết nó với một loại MIME cụ thể bằng cách
MimeUtils. - Cấu hình mô-đun Trình trích xuất phương tiện để nó có thể đọc siêu dữ liệu ở định dạng đó, nhờ đó MediaProvider có thể lập chỉ mục một cách chính xác.
- Trong trường hợp của
video/*yaudio/*, tiếp tục dựa vàoMediaMetadataRetrieverđể hiển thị siêu dữ liệu có liên quan. - Trong trường hợp của
image/*mở rộng hoặc sử dụngandroid.media.ExifInterfaceđể trích xuất và trả lại siêu dữ liệu EXIF đã được chuẩn hóa ngay cả trong các định dạng hình ảnh tùy chỉnh.
Điều quan trọng cần lưu ý là điều đó không được phép. Xác định lại các phần mở rộng hoặc kiểu MIME đã được định nghĩa trong AOSPĐể tránh sự không nhất quán hoặc xung đột giữa các thiết bị.
Lựa chọn thiết bị lưu trữ để lập chỉ mục
Theo mặc định, MediaProvider lập chỉ mục tất cả các volume được trả về bởi StorageManager.getStorageVolumes() ở đâu StorageVolume.getMediaStoreVolumeName() Nó không phải là rỗng. Tuy nhiên, các nhà sản xuất thiết bị gốc (OEM) có thể tinh chỉnh các tập tin nào được lập chỉ mục. xây dựng thương hiệu VolumeInfo.MOUNT_FLAG_INDEXABLE trên những thiết bị muốn chúng xuất hiện trong thư viện phương tiện.
Nó được khuyến khích Tránh đánh dấu các ổ đĩa tạm thời là có thể lập chỉ mục. —chẳng hạn như một số ổ USB OTG thường xuyên được kết nối và ngắt kết nối— để tránh tạo ra sự không nhất quán trong cơ sở dữ liệu hoặc gây ra lỗi khi ổ đĩa đột nhiên biến mất.
Thay thế và tùy chỉnh ngăn xếp MTP
Nguyên lý hoạt động của MTP (Giao thức truyền tải phương tiện), được sử dụng cho Chuyển file giữa điện thoại di động và máy tính qua cổng USB.Nó đã dần được tách ra khỏi ranh giới của mô-đun MediaProvider. Bắt đầu từ một số phiên bản nhất định, ngăn xếp MTP nằm hoàn toàn bên ngoài mô-đun và được đảm bảo hoạt động chỉ bằng cách sử dụng API công cộng và hệ thống.
Điều này cho phép các nhà sản xuất cần các giải pháp truyền tải cụ thể thay thế hoặc điều chỉnh ngăn xếp MTP của họ, miễn là họ duy trì khả năng tương thích với Hợp đồng MediaStore và MediaProviderđể trải nghiệm sao chép và đọc tập tin từ máy tính vẫn được nhất quán.
Thư mục mặc định và danh sách loại trừ
Khi một ổ lưu trữ được kích hoạt lần đầu, MediaProvider thường tạo ra một loạt các tệp thư mục tiêu chuẩn như Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (Tính năng cuối cùng này không có trong một số phiên bản cũ hơn).
Đối với các thiết bị có yêu cầu tổ chức cụ thể, các nhà sản xuất thiết bị gốc (OEM) có thể cung cấp... danh sách các thư mục cần bỏ qua trong quá trình tạo ban đầu thông qua lớp phủ tài nguyên config_foldersToSkipInDefaultCreationDo đó, ví dụ, họ có thể ngăn việc tạo thư mục theo mặc định. Notifications/ o Ringtones/ nếu họ đã có sẵn một hệ thống thay thế khác.
Phụ thuộc MediaProvider và Yêu cầu kỹ thuật

Khi tùy chỉnh MediaProvider, các nhà sản xuất thiết bị gốc (OEM) nên cân nhắc một số yếu tố sau: phụ thuộc kỹ thuật Để đảm bảo mọi thứ tiếp tục hoạt động chính xác:
- Khi sử dụng định dạng tệp đa phương tiện không chuẩnMỗi định dạng phải được đăng ký ở cả hai nơi.
MimeUtilsnhư trong mô-đun của Trình trích xuất phương tiệnNếu không, MediaProvider sẽ không thể lập chỉ mục chúng hoặc cung cấp siêu dữ liệu đầy đủ. - Để đảm bảo rằng một bộ thiết bị lưu trữ tùy chỉnh (khe cắm SD, cổng USB tích hợp, v.v.) được lập chỉ mục, việc triển khai
StorageManagerServiceBạn phải đánh dấu các dung lượng mong muốn bằngVolumeInfo.MOUNT_FLAG_INDEXABLE. - Nếu sử dụng ngăn xếp MTP tùy chỉnh, nó phải dựa hoàn toàn vào... API công cộng và hệ thống Để duy trì khả năng tương thích với MediaStore và không làm gián đoạn sự tương tác giữa máy tính và thư viện đa phương tiện của thiết bị.
Hơn nữa, trong bối cảnh chuyển mã video, các thiết bị phải đáp ứng một số yêu cầu nhất định. yêu cầu phần cứng tối thiểuCamera tích hợp hỗ trợ mã hóa HEVC, hiệu năng đọc và ghi dữ liệu đủ tốt, cùng với các codec có khả năng đạt tốc độ xử lý cao trong các tác vụ chuyển đổi.
Kiểm tra, chẩn đoán và các lỗi thường gặp của MediaProvider

Trong điều kiện sử dụng bình thường, MediaProvider thường không gây chú ý. Tuy nhiên, giống như bất kỳ thành phần hệ thống nào khác, nó cũng có thể gặp sự cố: đóng cửa bất ngờCác lỗi xảy ra khi đọc một số tệp nhất định, lỗi khi cập nhật siêu dữ liệu hoặc bị chặn khi quét các ổ đĩa bị hỏng.
Trong hệ sinh thái Android, có một số kiểm tra tự động để kiểm tra xem nó có hoạt động chính xác hay không:
- CtsProviderTestCases: bộ kiểm thử của Bộ kiểm tra khả năng tương thích Điều này giúp xác thực hoạt động của các API công khai của MediaStore so với MediaProvider.
- MediaProviderTests: Các bài kiểm tra nội bộ tập trung vào hành vi cụ thể của mô-đun và các thành phần của nó.
Các nhà phát triển hoặc kỹ thuật viên có thể chạy các bộ kiểm thử này bằng các lệnh như sau:
atest --test-mapping packages/providers/MediaProvider
Trên các diễn đàn kỹ thuật, một số người dùng đã báo cáo Sự cố MediaProvider tái diễn do lỗi bộ nhớ (OutOfMemoryError(Đặc biệt khi quét các bộ sưu tập video rất lớn hoặc xử lý các phân vùng thẻ SD bị hỏng). Trong những trường hợp này, nên thực hiện các bước sau:
- Kiểm tra trạng thái vật lý của bộ nhớ trong và ngoài (Định dạng lại hoặc thay thế thẻ nếu thẻ có lỗi).
- Duy trì hệ thống và Các mô-đun Mainline được cập nhật Tải ứng dụng từ Google Play để nhận thông báo sửa lỗi.
- Kiểm tra xem có ứng dụng nào đang tạo ra lỗi không. các tập tin bị hỏng hoặc các tập tin có siêu dữ liệu bất thường Điều đó gây ra lỗi lập chỉ mục.
Các công cụ và tiện ích liên quan đến MediaProvider

Nếu bạn muốn tìm hiểu thêm về cách MediaProvider được cập nhật hoặc các mô-đun Mainline nào bạn đã cài đặt, bạn có thể sử dụng một số công cụ sau:
- Trình cập nhật dòng chính: một ứng dụng đơn giản liệt kê Các mô-đun chính có trên thiết bị của bạn Nó cũng cung cấp các phím tắt đến bảng cập nhật hệ thống Google Play. Điều này rất hữu ích để kiểm tra xem MediaProvider và các thành phần quan trọng khác của bạn đã được cập nhật hay chưa.
- Quản lý nhà cung cấp phương tiện truyền thông: một mô-đun Xposed mã nguồn mở cho phép Giám sát và hạn chế việc sử dụng MediaStore. Thông qua các ứng dụng. Với tính năng này, người dùng nâng cao có thể xem xét ứng dụng nào yêu cầu nhiều quyền truy cập nhất, chúng sử dụng những quyền nào, và thậm chí hạn chế một số quyền truy cập nhất định để cải thiện quyền riêng tư.
Những công cụ này không thiết yếu đối với người dùng thông thường, nhưng chúng cung cấp thêm một mức độ kiểm soát cho những người muốn quản lý hệ thống của họ một cách hiệu quả. hành vi đa phương tiện và quyền riêng tư chi tiết hơn trên thiết bị Android của bạn.
MediaProvider đã trở thành một thành phần trung tâm của hệ thống Android: nó tổ chức hiệu quả tất cả nội dung đa phương tiện, bảo vệ quyền riêng tư tốt hơn thông qua bộ nhớ có phạm vi, tạo điều kiện thuận lợi cho việc chuyển mã các định dạng hiện đại và tự động cập nhật nhờ các mô-đun Mainline. Hiểu cách thức hoạt động của thành phần vô hình này sẽ giải thích tại sao ngày nay thư viện ảnh, ứng dụng âm nhạc và dịch vụ đám mây của bạn hoạt động nhanh hơn, ổn định hơn và an toàn hơn nhiều so với các thế hệ hệ thống trước đây.


