27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main
এর পরিবর্তে android-latest-release
ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
মিডিয়াপ্রোভাইডার মডিউল
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
মিডিয়াপ্রোভাইডার মডিউল ইনডেক্স করা মেটাডেটা (এসডি কার্ড এবং ইউএসবি ডিভাইস থেকে অডিও, ভিডিও এবং ছবি) অপ্টিমাইজ করে এবং সেই ডেটা মিডিয়াস্টোর পাবলিক API-এর মাধ্যমে অ্যাপগুলিতে উপলব্ধ করে। ব্যবহারকারীর গোপনীয়তা বজায় রাখতে, মিডিয়াপ্রোভাইডার মডিউলটি Android 10-এ প্রবর্তিত স্কোপড স্টোরেজ সিকিউরিটি মডেলটি প্রয়োগ করে, যার মধ্যে সংবেদনশীল অবস্থানের মেটাডেটা সংশোধন করা রয়েছে। এই মডিউলটি আপডেট করা যায়, যা Android-কে নিরাপত্তা সংক্রান্ত সমস্যায় দ্রুত সাড়া দিতে সক্ষম করে (ব্যবহারকারীর সংবেদনশীল ডেটা সুরক্ষিত রাখা) এবং দ্রুত নতুন মিডিয়া ফর্ম্যাট যোগ করে (ব্যবহারকারী এবং ডেভেলপার উভয়কেই সামঞ্জস্য প্রদান করে)।
Android 10 এ পরিবর্তন
অ্যান্ড্রয়েড 10 মিডিয়া ফাইলগুলি থেকে ডেটা সনাক্তকরণ এবং বের করার সাথে সম্পর্কিত বেশ কয়েকটি উন্নতি প্রবর্তন করেছে, বিশেষত:
একটি ফাইলের MIME প্রকারের প্রথম অংশ ব্যবহার করে ফাইল সামগ্রীর ধরন নির্ধারণ করা। উদাহরণস্বরূপ, ওএস জানে যে image/png
এবং image/x-newly-invented-format
উভয়ই ইমেজ, এবং এইভাবে শেষ ব্যবহারকারীর কাছে প্রাসঙ্গিক অনুমতিগুলি সঠিকভাবে বর্ণনা করতে পারে।
শুধুমাত্র ফাইল এক্সটেনশন ব্যবহার করে MIME প্রকার নির্ধারণ করা (এবং নিরাপত্তা সমস্যা এড়াতে সামগ্রী স্নিফিং ব্যবহার না করে)।
আপস্ট্রিম ডেবিয়ান লিনাক্স এবং অ্যান্ড্রয়েড ম্যাপিং এর সংমিশ্রণ ব্যবহার করে একটি নির্বিচারে ফাইলের MIME প্রকার নির্ধারণ করা।
video/*
এবং audio/*
ফাইল ( MediaMetadataRetriever
এর মাধ্যমে) এবং image/*
ফাইল ( ExifInterface
এর মাধ্যমে) থেকে প্রাসঙ্গিক ডেটা ফেরত দেওয়া।
Android 11 এ পরিবর্তন
অ্যান্ড্রয়েড 11-এ, মিডিয়াপ্রোভাইডার মডিউল নিম্নলিখিত উন্নতিগুলির সাথে Android 10-এ করা পরিবর্তনগুলির উপর ভিত্তি করে তৈরি করে:
সূচীকরণের উন্নতি। MediaProvider মডিউল এখন MediaStore পাবলিক API-এর বিরুদ্ধে উপলব্ধ মেটাডেটা সমন্বয় করে মেটাডেটা সূচী করে। পরিবর্তন অন্তর্ভুক্ত:
নতুন is_favorite
কলাম এবং QUERY_ARG_MATCH_FAVORITE
আর্গুমেন্ট এই কলামের উপর ভিত্তি করে মিডিয়াকে দ্রুত ফিল্টার করতে গ্যালারি-স্টাইল অ্যাপগুলিকে সক্ষম করতে৷
ইন্ডেক্সিং রঙ স্থান মেটাডেটা.
নতুন 'is_trashed' কলাম এবং QUERY_ARG_MATCH_TRASHED
আর্গুমেন্ট এই কলামের উপর ভিত্তি করে ফিল্টার করার জন্য গ্যালারি-স্টাইলের অ্যাপগুলিকে সক্ষম করতে।
নতুন এপিআই যা createDeleteRequest()
, createFavoriteRequest()
, createTrashRequest()
, এবং createWriteRequest()
সহ একটি একক ব্যবহারকারী ডায়ালগ প্রম্পট সহ একাধিক আইটেমের বাল্ক-সংশোধন সক্ষম করে।
নতুন GENERATION_ADDED
এবং GENERATION_MODIFIED
কলামগুলি পূর্ববর্তী সিঙ্ক্রোনাইজেশন বিন্দু থেকে সংঘটিত পরিবর্তনগুলি দ্রুত এবং নির্ভরযোগ্যভাবে সনাক্ত করার জন্য ব্যবহারের জন্য৷
উপরে উল্লিখিত নয় অতিরিক্ত মেটাডেটা কলামগুলির সাথে ব্যবহারের জন্য পাবলিক API GROUP BY
৷
PNG এবং WebP কন্টেইনার থেকে মেটাডেটা বের করতে ExifInterface
এর উন্নতি।
স্ক্রীন ক্যাপচারে DateTimeOriginal
মেটাডেটা লেখার জন্য SystemUI
তে উন্নতি।
উপরন্তু, আপনি এখন মিডিয়াপ্রোভাইডারকে নতুন মিডিয়া ফর্ম্যাট যোগ করে কাস্টমাইজ করতে পারেন, কোন স্টোরেজ ডিভাইসগুলিকে ইন্ডেক্স করা উচিত তা চিহ্নিত করে এবং এমনকি MTP স্ট্যাক প্রতিস্থাপন করে। বিস্তারিত জানার জন্য, কাস্টমাইজেশন দেখুন।
মডিউল সীমানা
অ্যান্ড্রয়েড 11 packages/providers/MediaProvider
সমস্ত কোড এমটিপি-সম্পর্কিত যুক্তির উল্লেখযোগ্য ব্যতিক্রম সহ একটি নতুন অবস্থানে স্থানান্তরিত করে। উপরন্তু, frameworks/base/core/java/android/provider/MediaStore.java
এখন packages/providers/MediaProvider
এ মডিউল সীমানার ভিতরে রয়েছে।
MediaProvider মডিউল APK-in-APEX ফর্ম্যাটে রয়েছে।
নির্ভরতা
মিডিয়াপ্রোভাইডার নির্ভরতাগুলি কাস্টমাইজেশনের সাথে সম্পর্কিত (অর্থাৎ, আপনি মিডিয়াপ্রোভাইডারকে কাস্টমাইজ করলে, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার বাস্তবায়ন আপনার কাস্টমাইজেশনের সাথে সম্পর্কিত নির্ভরতা পূরণ করে)।
কাস্টম বা নন-স্ট্যান্ডার্ড মিডিয়া ফাইল ফরম্যাট ব্যবহার করার সময় (উদাহরণস্বরূপ, একটি বিক্রেতা-নির্দিষ্ট ক্যামেরা অ্যাপ দ্বারা তৈরি একটি ফর্ম্যাট), আপনাকে MediaProvider দ্বারা সূচীকরণ সক্ষম করতে MimeUtils
এবং মিডিয়া এক্সট্র্যাক্টর মডিউলের সাথে প্রতিটি কাস্টম ফর্ম্যাট নিবন্ধন করতে হবে।
StorageManagerService
বাস্তবায়নে ব্যবহৃত স্টোরেজ ডিভাইসের একটি কাস্টম সেট (যেমন SD কার্ড স্লট এবং USB পোর্ট) মিডিয়াপ্রোভাইডার সূচীকরণ নিশ্চিত করতে, VolumeInfo.MOUNT_FLAG_INDEXABLE
পতাকা সেট করুন।
একটি কাস্টম (নন-এওএসপি) এমটিপি বাস্তবায়ন ব্যবহার করার সময়, নিশ্চিত করুন যে বাস্তবায়নটি মিডিয়াস্টোরের সাথে ইন্টারঅ্যাক্ট করতে বাস্তবায়ন সক্ষম করার জন্য শুধুমাত্র পাবলিক এবং সিস্টেম API-এর উপর নির্ভর করে।
কাস্টমাইজেশন
আপনি এখন নতুন মিডিয়া ফর্ম্যাট যোগ করতে পারেন, কোন স্টোরেজ ডিভাইসগুলিকে ইন্ডেক্স করা হয়েছে তা প্রভাবিত করতে এবং MTP স্ট্যাক প্রতিস্থাপন করতে পারেন।
কাস্টম মিডিয়া ফরম্যাট। প্রতিটি নতুন কাস্টম মিডিয়া বিন্যাসের জন্য, আপনাকে অনন্য ফাইল এক্সটেনশন থেকে একটি MIME প্রকারে একটি ম্যাপিং প্রদান করতে হবে৷ আমরা দৃঢ়ভাবে আপনাকে IANA নিবন্ধন প্রক্রিয়া অনুসরণ করার জন্য উত্সাহিত করি।
আপনি একটি এক্সটেনশন বা MIME প্রকারকে পুনরায় সংজ্ঞায়িত করতে পারবেন না যা ইতিমধ্যে AOSP-এ সংজ্ঞায়িত করা হয়েছে৷
video/*
এবং audio/*
ফাইলের জন্য, MediaProvider MediaMetadataRetriever
সাথে পরামর্শ করে চলেছে। কাস্টম ফর্ম্যাটের জন্য মেটাডেটা ফেরত দিতে Android 10 মিডিয়া এক্সট্র্যাক্টর ব্যবহার করুন।
image/*
ফাইলের জন্য, মিডিয়াপ্রোভাইডার মেটাডেটার জন্য Exif
এ স্ট্যান্ডার্ডাইজ করা চালিয়ে যাচ্ছে। যেকোনো কাস্টম ইমেজ ফরম্যাটের জন্য Exif
মেটাডেটা এক্সট্র্যাক্ট এবং রিটার্ন করতে আপনি android.media.ExifInterface
প্রসারিত করতে পারেন।
স্টোরেজ ডিভাইস ইনডেক্সিং পতাকা। মিডিয়াপ্রোভাইডার StorageManager.getStorageVolumes()
দ্বারা প্রত্যাবর্তিত সমস্ত ভলিউম সূচী করে যেখানে StorageVolume.getMediaStoreVolumeName()
নন-নাল। আপনি যা সূচীকরণ করা হয়েছে তা প্রভাবিত করার জন্য প্রত্যাবর্তিত ভলিউমের তালিকা কাস্টমাইজ করতে পারেন, তবে আমরা ক্ষণস্থায়ী ভলিউম (যেমন USB OTG ড্রাইভ) অন্তর্ভুক্ত করার বিরুদ্ধে পরামর্শ দিই।
MTP স্ট্যাক প্রতিস্থাপন। Android 11 MTP স্ট্যাককে সম্পূর্ণরূপে মডিউল সীমানার বাইরে রাখে এবং নিশ্চিত করে যে এটি সর্বজনীন API-এর বিরুদ্ধে কাজ করে।
টেস্টিং
আপনি নিম্নলিখিত পরীক্ষাগুলি ব্যবহার করে MediaProvider এর কার্যকারিতা যাচাই করতে পারেন:
MediaStore পাবলিক API-এর কার্যকারিতা যাচাই করতে, Android Compatibility Test Suite (CTS)-এর CtsProviderTestCases
প্যাকেজে পরীক্ষাগুলি ব্যবহার করুন৷
MediaProvider ইন্টারনালের কার্যকারিতা যাচাই করতে, MediaProviderTests
এ পরীক্ষাগুলি ব্যবহার করুন।
উভয় সেট পরীক্ষা একসাথে চালানোর জন্য, নিম্নলিখিত atest
কমান্ডটি ব্যবহার করুন:
atest --test-mapping packages/providers/MediaProvider
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# MediaProvider module\n\nThe MediaProvider module optimizes indexed metadata (audio, video, and images\nfrom SD cards and USB devices) and makes that data available to apps through the\n[MediaStore public\nAPIs](https://developer.android.com/reference/android/provider/MediaStore).\nTo maintain user privacy, the MediaProvider module enforces the [scoped storage\nsecurity\nmodel](https://developer.android.com/training/data-storage/files/external-scoped)\nintroduced in Android 10, which includes redacting sensitive location metadata.\nThis module is updatable, enabling Android to respond faster to security issues\n(keeping sensitive user data protected) and add new media formats quicker\n(providing consistency to both users and developers).\n\nChanges in Android 10\n---------------------\n\nAndroid 10 introduced several improvements related to identifying and extracting\ndata from media files, specifically:\n\n- Determining the file content type using the first part of a file's MIME type.\n For example, the OS knows that both `image/png` and\n `image/x-newly-invented-format` are images, and can thus accurately describe\n relevant permissions to the end user.\n\n- Determining the MIME type using only the file extension (and without using\n [content sniffing](https://en.wikipedia.org/wiki/Content_sniffing)\n to avoid security issues).\n\n- Determining the MIME type of an arbitrary file using a combination of\n [upstream Debian Linux and Android\n mappings](https://android-review.googlesource.com/c/platform/libcore/+/735506).\n\n- Returning relevant data from `video/*` and `audio/*` files (via\n `MediaMetadataRetriever`) and `image/*` files (via `ExifInterface`).\n\nChanges in Android 11\n---------------------\n\nIn Android 11, the MediaProvider module builds on the\nchanges made in Android 10 with the following improvements:\n\n- Improvements to indexing. The MediaProvider module now indexes metadata by\n reconciling available metadata against MediaStore public APIs. Changes\n include:\n\n - New `is_favorite` column and `QUERY_ARG_MATCH_FAVORITE` argument to enable\n gallery-style apps to quickly filter media based on this column.\n\n - Indexing color space metadata.\n\n - New 'is_trashed' column and `QUERY_ARG_MATCH_TRASHED` argument to enable\n gallery-style apps to filter based on this column.\n\n - New APIs that enable bulk-modification of multiple items with a single user\n dialog prompt, including `createDeleteRequest()`, `createFavoriteRequest()`,\n `createTrashRequest()`, and `createWriteRequest()`.\n\n - New `GENERATION_ADDED` and `GENERATION_MODIFIED` columns for use in quickly\n and reliably detecting changes that have occurred since a previous\n synchronization point.\n\n - New `GROUP BY` public API for use with additional metadata columns not\n mentioned above.\n\n- Improvement to `ExifInterface` to extract metadata from PNG and WebP\n containers.\n\n- Improvements to `SystemUI` to write `DateTimeOriginal` metadata in screen\n captures.\n\nIn addition, you can now customize MediaProvider by adding new media formats,\nmarking which storage devices should be indexed, and even replacing the MTP\nstack. For details, see [Customization](#customization).\n\nModule boundary\n---------------\n\nAndroid 11 migrates all code in\n`packages/providers/MediaProvider` to a new location, with the notable exception\nof MTP-related logic. In addition,\n`frameworks/base/core/java/android/provider/MediaStore.java` is now *inside* the\nmodule boundary at `packages/providers/MediaProvider`.\n\nPackage format\n--------------\n\nThe MediaProvider module is in APK-in-APEX format.\n\nDependencies\n------------\n\nMediaProvider dependencies are related to [customizations](#customization) (that\nis, if you customize MediaProvider, you must ensure your implementation meets\nthe dependency associated with your customization).\n\n- When using custom or nonstandard media file formats (for example, a format\n generated by a vendor-specific Camera app), you must register each custom\n format with `MimeUtils` and the Media Extractor module to enable indexing by\n MediaProvider.\n\n- To ensure MediaProvider indexes a custom set of storage devices (such SD card\n slots and USB ports) used in a `StorageManagerService` implementation, set the\n `VolumeInfo.MOUNT_FLAG_INDEXABLE` flag.\n\n- When using a custom (non-AOSP) MTP implementation, ensure the implementation\n relies solely on public and system APIs to enable the implementation to\n interact with MediaStore.\n\nCustomization\n-------------\n\nYou can now add new media formats, influence which storage devices are indexed,\nand replace the MTP stack.\n\n- **Custom media formats.** For each new custom media format, you must provide a\n mapping from the unique file extension to a MIME type. We strongly encourage\n you to follow the [IANA registration\n process](https://www.iana.org/assignments/media-types/media-types.xhtml).\n\n - You can't redefine an extension or MIME type that's already defined in AOSP.\n\n - For `video/*` and `audio/*` files, MediaProvider continues consulting\n `MediaMetadataRetriever`. Use the Android 10 Media Extractors to return\n metadata for custom formats.\n\n - For `image/*` files, MediaProvider continues standardizing on `Exif` for\n metadata. You can extend `android.media.ExifInterface` to extract and return\n `Exif` metadata for any custom image formats.\n\n- **Storage devices indexing flag.** MediaProvider indexes all volumes returned\n by `StorageManager.getStorageVolumes()` where\n `StorageVolume.getMediaStoreVolumeName()` is non-null. You can customize the\n list of volumes returned to influence what is indexed, but we advise against\n including transient volumes (such as USB OTG drives).\n\n- **MTP stack replacement.** Android 11 places the MTP\n stack entirely outside the module boundary and ensures that it works against\n public APIs.\n\nTesting\n-------\n\nYou can verify the functionality of MediaProvider using the following tests:\n\n- To verify the functionality of MediaStore public APIs, use tests in the\n `CtsProviderTestCases` package of the Android Compatibility Test Suite (CTS).\n\n- To verify the functionality of MediaProvider internals, use tests in\n `MediaProviderTests`.\n\nTo run both sets of tests together, use the following `atest` command: \n\n atest --test-mapping packages/providers/MediaProvider"]]