
Në vitet e fundit, Android ka evoluar në mënyrë dramatike në menaxhimin e skedarëve dhe sigurinë e sistemit. Një nga elementët më pak të shpjeguar - por jetik për ruajtjen e duhur dhe privatësinë e përdoruesit - është moduli i njohur MediaProvider . Nëse ndonjëherë keni menduar se çfarë është ky komponent, pse shfaqet ndonjëherë në mesazhet e sistemit, çfarë përmirësimesh sjell me secilin version të Android ose si ndikon në telefonin tuaj, do ta analizojmë në detaje këtu.
Është e lehtë të hasësh emrin MediaProvider gjatë navigimit nëpër cilësimet e telefonit tënd, duke kontrolluar përdorimin e hapësirës së ruajtjes ose duke shfletuar forumet teknike, por shumica e njerëzve nuk janë plotësisht të sigurt se çfarë bën ose pse është thelbësor që aplikacione si galeritë e fotove, luajtësit e muzikës dhe menaxherët e skedarëve të funksionojnë pa probleme . Le ta hedhim një vështrim më të afërt në mënyrë që të jeni plotësisht të vetëdijshëm për rolin e tij në përvojën tuaj të përditshme me Android, pavarësisht nëse thjesht doni ta kuptoni më mirë telefonin tuaj apo të zhvilloni aplikacione ose ROM të personalizuara.
Çfarë është MediaProvider dhe cili është funksioni i tij në Android?
El Moduli i MediaProvider Është një nga komponentët e brendshëm të sistemit Android përgjegjës për menaxhoni, indeksoni dhe ofroni qasje në skedarë multimedialë siç janë fotot, videot dhe muzika e ruajtur si në memorien e brendshme ashtu edhe në pajisjet e jashtme (kartat SD, disqet USB, etj.). Nuk është një aplikacion normal, por një Ofruesi i Përmbajtjes së Sistemit e cila mbështetet në bazën e të dhënave publike MediaStore në mënyrë që aplikacionet e tjera të mund të qasen shpejt dhe në mënyrë të sigurt në përmbajtjen multimediale.
Funksioni i tij kryesor është të analizojë skedarët, të nxjerrë meta të dhënat e tyre dhe t'i indeksojë ato në tabela të optimizuara. Këto meta të dhëna përfshijnë elementë të tillë si lloji i skedarit, kohëzgjatja e videos ose audios, rezolucioni i imazhit, data e kapjes, madhësia, vendi i ruajtjes dhe, në disa raste, të dhëna të përparuara EXIF për fotografitë.
Falë këtij moduli, aplikacionet mund të shfaqin të gjithë bibliotekën tuaj pa pasur nevojë të skanojnë manualisht të gjithë pemën e dosjeve . Një galeri fotosh, për shembull, nuk ka nevojë të skanojë çdo drejtori: ajo dërgon një kërkesë te MediaStore dhe brenda milisekondave merr një listë të faqezuar të të gjitha imazheve, të renditura dhe të filtruara sipas nevojës. Kjo përmirëson ndjeshëm performancën dhe jetëgjatësinë e baterisë krahasuar me një skanim të drejtpërdrejtë të sistemit të skedarëve.
MediaProvider integrohet gjithashtu me modelin e ruajtjes me fushëveprim . Në praktikë, kjo do të thotë që moduli zbaton rregulla sigurie për të kontrolluar se cilat aplikacione mund të shikojnë dhe modifikojnë skedarë specifikë. Për shembull, ai fsheh ose redakton meta të dhënat e ndjeshme , siç është vendndodhja e saktë ku është bërë një foto, kur një aplikacion nuk ka nevojë për atë informacion ose nuk ka lejet e nevojshme.
Një aspekt tjetër kyç është se MediaProvider është pjesë e të ashtuquajturave module Mainline (ose module të përditësueshme nga sistemi), të cilat i lejojnë Google dhe prodhuesve ta përditësojnë atë në mënyrë të pavarur përmes Google Play . Në këtë mënyrë, rregullohen dobësitë e sigurisë, shtohet përputhshmëria me formatet e reja të skedarëve dhe veçoritë përsosen pa pritur për një përditësim të plotë të sistemit.
Si ndikon MediaProvider në jetën tuaj të përditshme
Edhe pse nuk mund ta shihni, MediaProvider punon vazhdimisht në sfond. Disa shembuj të qartë se si ndikon në përvojën tuaj të përditshme janë:
- Hapje e shpejtë e galerisë: Kur hapni aplikacionin e fotove, ai pyet MediaStore dhe, falë indeksimit paraprak të modulit, mund t'i shfaqë imazhet tuaja pothuajse menjëherë.
- Kërkime sipas datës, llojit ose albumit: Shumë galeri ju lejojnë të filtroni sipas videove, selfieve, pamjeve të ekranit ose datave specifike. I gjithë ky informacion vjen nga metadatat e menaxhuara nga MediaProvider.
- Luajtësit e muzikës dhe podkasteve: Listat sipas artistit, albumit, zhanrit ose listave të dëgjimit bazohen në të dhënat që MediaProvider ka mbledhur dhe normalizuar nga skedarët audio.
- Aplikacionet e mesazheve dhe mediave sociale: Kur ndani një foto nga WhatsApp, Telegram ose Instagram duke përdorur përzgjedhësin e imazheve, ato në fakt janë duke lexuar katalogun e MediaStore dhe filtrim sipas llojit të përmbajtjes së kërkuar.
- Menaxherët e skedarëve: Disa shfletues përdorin pyetjet e MediaStore për të listuar shpejt të gjitha multimediat, në vend që të shfletojnë manualisht mijëra dosje dhe skedarë.
Detyrat edhe më pak të dukshme, siç është një foto e bërë me kamerën që shfaqet në galeri ose në cloud brenda sekondave, zakonisht koordinohen me MediaProvider, i cili është përgjegjës për regjistrimin e artikullit të ri, nxjerrjen e meta të dhënave të tij dhe njoftimin e aplikacioneve të interesuara për ndryshimet.
Evolucioni i MediaProvider: Nga Android 10 në Android 11 dhe më tej

Hapi i madh në evolucionin e MediaProvider filloi me ardhjen e hapësirës së ruajtjes me hapësirë të kufizuar në Android 10. Që nga ai moment, sistemi riorganizoi mënyrën se si identifikohen skedarët mediatikë dhe si ekspozohen ndaj aplikacioneve, duke e detyruar MediaProvider të bëhej shumë më i zgjuar dhe më i sigurt.
Ndryshimet e prezantuara duke filluar me Android 10
Që nga ai version, Android ka prezantuar disa përmirësime kyçe në lidhje me identifikimin dhe nxjerrjen e të dhënave nga skedarët multimedialë :
- Sistemi përcakton lloji i përmbajtjes së skedarit duke përdorur pjesën e parë të tipit MIMEPër shembull, ai e di që
image/pngyimage/x-newly-invented-formatAta janë të dy llojet e imazheveKjo lejon një përshkrim më të mirë të lejeve dhe sjelljeve të lidhura për përdoruesin. - Për të përmirësuar sigurinë, nxjerr llojin MIME vetëm nga zgjerimi nga skedari, duke shmangur teknikat e zbulimit të përmbajtjes që mund të hapin dobësi.
- Përcaktimi i MIME bazohet në një kombinim tabelash të trashëguara nga përkufizimet e Debian Linux dhe AndroidKjo rezulton në një zbulim shumë më të besueshëm dhe të qëndrueshëm të formateve të pazakonta.
- MediaProvider ia delegon blerjen e meta të dhënave të avancuara mjeteve të specializuara:
MediaMetadataRetrieverpër skedarëtvideo/*yaudio/*, DheExifInterfacepër skedarëtimage/*, duke marrë kështu kohëzgjatja, shpejtësia e biteve, rezolucioni, orientimi, informacioni i kamerës dhe informacione të tjera të dobishme.
Ky grup ndryshimesh u lejoi aplikacioneve të merrnin meta të dhëna më të besueshme dhe të standardizuara , ndërkohë që forcuan masat e sigurisë dhe hodhën themelet për lejet e aksesit të rafinuara që njohim sot.
Përmirësimet e prezantuara duke filluar me Android 11
Me Android 11, MediaProvider ndërtoi mbi këto themele dhe ndërmori një hap më tej në organizimin e përmbajtjes, performancën dhe aftësitë për aplikacionet :
- U bënë përmirësime të thella në indeksim të skedarëve dhe meta të dhënave. Tani moduli përputh meta të dhënat e disponueshme me atë që ekspozojnë API-të e MediaStore, duke e përshtatur më mirë atë që ruhet brenda me atë që aplikacionet mund të kërkojnë.
- Kolona të reja u shtuan në bazën e të dhënave, si p.sh.
is_favoritedhe argumenti për konsultimQUERY_ARG_MATCH_FAVORITEKjo lejon aplikacione të tipit galeri Filtroni shpejt përmbajtjen e shënuar si të preferuara nga përdoruesi. - MediaProvider filloi të metadatat e hapësirës së ngjyrave të indeksitthelbësore për trajtimin e përmbajtjes HDR, fotove që janë më reale dhe një përfaqësim më të saktë në ekranet e përparuara.
- Kolona u prezantua
is_trasheddhe argumentiQUERY_ARG_MATCH_TRASHEDpër të dalluar qartë skedarët që janë në kosh riciklimiduke i lejuar galeritë ta menaxhojnë në mënyrë native atë kosh plehrash. - Ata u shfaqën API të reja për operacione me shumicë në disa elementë me një dialog të vetëm konfirmimi të përdoruesit, duke përfshirë:
createDeleteRequest()për të fshirë shumë skedarë në të njëjtën kohë.createFavoriteRequest()për të shënuar ose çshënuar shumë të preferuara me një veprim të vetëm.createTrashRequest()për të dërguar grupe skedarësh direkt në koshin e plehrave.createWriteRequest()për të kërkuar leje shkrimi në shumë artikuj.
- U shtuan kolona të reja, si p.sh.
GENERATION_ADDEDyGENERATION_MODIFIEDqë lejojnë aplikacionet zbuloni shpejt se çfarë ka ndryshuar që nga një sinkronizim i mëparshëm. pa pasur nevojë të skanoni përsëri të gjithë bibliotekën. - Një u shtua API publike e
GROUP BYqë ju lejon të gruponi rezultatet sipas albumit, datës ose meta të dhënave të tjera pa pasur nevojë të bëni përpunime të ndërlikuara pasuese në aplikacion. - U përmirësua
ExifInterfacepara Ekstraktoni metadatat nga kontejnerët PNG dhe WebP, duke zgjeruar numrin e formateve të imazhit të përpunuara në një mënyrë të përparuar. - SystemUI filloi të shkruante metadata
DateTimeOriginalnë pamjet e ekranit, në mënyrë që MediaProvider të mundet për të organizuar dhe shfaqur më mirë këto lloje imazhesh brenda galerive.
Për sa i përket arkitekturës, MediaProvider u migrua në një format APK-in-APEX . Kjo do të thotë që kodi Java është i paketuar si një APK brenda një kontejneri APEX në nivel sistemi. Avantazhi është se moduli mund të ngarkohet shumë herët në procesin e nisjes , madje edhe para shumë pjesëve të framework-ut, ndërkohë që përfiton gjithashtu nga përditësimet e shpejta nëpërmjet Google Play.
Modulet MediaProvider dhe Mainline: Përditësime të pavarura në Android

Një nga strategjitë kryesore të Google për të luftuar fragmentimin dhe për të ofruar pajisje më të sigurta është krijimi i moduleve Mainline . Këto janë komponentë të sistemit që mund të përditësohen në mënyrë të pavarur nga Google Play, pa ndërhyrjen e drejtpërdrejtë të prodhuesit ose pa nevojën për të instaluar një përditësim të plotë OTA.
Këto module përfshijnë MediaProvider, si dhe të tjerë si ART (mjedisi i ekzekutimit të aplikacionit), Conscrypt (një bibliotekë kriptografike), Media , Media Codecs , Wi-Fi , Tethering dhe shumë të tjerë. Së bashku, ato i lejojnë Android-it të rregullojë defekte kritike, të përmirësojë performancën dhe të shtojë veçori pa qenë tërësisht i varur nga orari i publikimit të secilit prodhues.
Është e rëndësishme të sqarohet se, megjithëse arkitektura modulare filloi të prezantohej me Android 10, MediaProvider, konkretisht, përfitoi nga përditësimet Mainline duke filluar me Android 11. Falë kësaj, nëse zbulohet një dobësi sigurie, papajtueshmëri me formatet e reja multimediale ose një problem me performancën e indeksimit, Google mund ta rregullojë atë dhe ta publikojë përditësimin njësoj si çdo aplikacion tjetër në Google Play. Në këtë mënyrë, telefoni juaj mbetet më i sigurt dhe në përputhje me pjesën tjetër të ekosistemit, edhe nëse prodhuesi juaj nuk është veçanërisht i shpejtë në publikimin e versioneve të reja të Android.
Çfarë modulesh të tjera Mainline ekzistojnë dhe si lidhet MediaProvider me to?

MediaProvider është vetëm një nga shumë module Mainline të projektuara për ta bërë sistemin më modular, të sigurt dhe lehtësisht të përditësueshëm. Disa nga më të rëndësishmet, veçanërisht ato që lidhen me përvojën multimediale dhe të rrjetit, janë:
- Media: Ai merret me përpunimin e skedarëve multimedialë në pajisjen celulare, duke përfshirë shërbimet e luajtjes, kapjes dhe menaxhimit të transmetimit.
- Kodekët e medias: Ai i mban kodekët audio dhe video të përditësuar, duke lejuar përputhshmëri dhe siguri të përmirësuar në dekodim dhe kodim pa prekur të gjithë sistemin.
- ARTI: Ai menaxhon mjedisin e ekzekutimit të aplikacionit (përpilimi, optimizimi i bytecode-it, etj.). Përmirësimet në këtë modul ndikojnë drejtpërdrejt në performanca e aplikacionit.
- Konskript: Ai përditëson pjesën kriptografike të sistemit, e cila është thelbësore për lidhje të sigurta, certifikata dhe enkriptim.
- Wi-Fi: Ai përmban logjikën e lidhjes Wi-Fi, duke lejuar zbatimin e Përmirësime në stabilitet, pajtueshmëri dhe siguri pa një OTA të plotë.
- Lidhja e bashkimit: Kontrolloni ndarjen e lidhjeve Wi-Fi, USB, Bluetooth ose Ethernet përmes pajisjes suaj mobile.
- Kontrolluesi i Lejeve: Përditësoni modulin që menaxhon lejet dhe elementët e ndërfaqes së privatësisë për përdoruesit.
MediaProvider punon ngushtë me modulet Media dhe Media Codecs , pasi këto të fundit janë përgjegjëse për dekodimin dhe përpunimin e përmbajtjes që indekson MediaProvider. Kur publikohen formate të reja ose përditësohen kodekët ekzistues, MediaProvider mund të fillojë njohjen dhe katalogimin e këtyre formateve më të reja (për shembull, variantet e reja HEVC, HDR ose kodekët audio) pa kërkuar një përditësim të plotë të Android, me kusht që edhe modulet e tjera të medias të jenë përditësuar.
Për të zbuluar se cilat module Mainline mbështet telefoni juaj, mund të përdorni mjete si aplikacioni falas Mainline Updater , i cili tregon se cilat module janë të pranishme dhe, me një buton të vetëm, ju çon në seksionin e Përditësimeve të Sistemit në Google Play . Atje do të shihni nëse ka ndonjë përditësim në pritje që ndikon, ndër të tjera, në MediaProvider.
MediaProvider, privatësia dhe siguria e ruajtjes

Një nga përparimet më të mëdha të kohëve të fundit në lidhje me MediaProvider është mbrojtja e privatësisë së përdoruesit . Më parë, shumë aplikacione mund të hynin në dosje të tëra në memorie të jashtme dhe të lexonin meta të dhëna shumë të detajuara - duke përfshirë vendndodhjen GPS të ngulitur në foto - pa pasur nevojë për rregullime të hollësishme nga sistemi.
Me kombinimin e hapësirës së ruajtjes me fushëveprim + MediaProvider + MediaStore , gjërat kanë ndryshuar:
- Aplikacionet kanë qasje e kufizuar në foto, video dhe audio. Për shembull, një aplikacion për redaktimin e fotove mund të hyjë në një imazh specifik të zgjedhur nga përdoruesi përmes zgjedhës fotografishpor jo pjesa tjetër e galerisë suaj.
- MediaProvider mund të redaktoni ose kufizoni metadatat e ndjeshme, siç është vendndodhja e saktë e kapjes ose informacioni i kamerës së brendshme, nëse aplikacioni nuk ka nevojë për ato të dhëna.
- Lejet bëhen më shumë grimcuar dhe transparentNuk bëhet më fjalë për lejimin ose mohimin e aksesit të plotë në hapësirën e ruajtjes, por për dhënien e aksesit në lloje specifike të përmbajtjes (imazhe, video, audio) apo edhe skedarë të zgjedhur nga përdoruesi.
- Mbrojtja kundër aplikacioneve keqdashëse që përpiqen të skanojnë hapësirën e ruajtjes për dokumente private ose përmbajtje të ndjeshme është forcuar. MediaProvider vepron si filtri dhe gjyqtari të asaj që mund të shihet ose modifikohet.
E gjithë kjo kombinohet me mundësitë e përvojave të përparuara, siç është Photo Picker më i fundit dhe ofruesit e përmbajtjes mediatike të bazuar në cloud , pjesë e të cilave është edhe MediaProvider në rrjedhën e të dhënave.
API-të dhe shembujt e përdorimit: Si bashkëveprojnë aplikacionet me MediaProvider

Aplikacionet e përdoruesit nuk komunikojnë drejtpërdrejt me MediaProvider, por nëpërmjet MediaStore , API-t publik që vepron si një ndërfaqe. Ky API ofron një ekosistem të plotë të qëllimeve, konstanteve dhe metodave të pyetjeve për të aksesuar skedarët mediatikë në një mënyrë të standardizuar.
Përpjekje për kapjen dhe përzgjedhjen e përmbajtjes
Ndër qëllimet më të spikatura që përfitojnë nga MediaStore (dhe, si rrjedhojë, MediaProvider) janë:
MediaStore.ACTION_IMAGE_CAPTURE: Të lejon të hapësh kamerën për të kapur një imazh dhe ta kthesh atë në aplikacionin e thirrjes.MediaStore.ACTION_IMAGE_CAPTURE_SECURE: Ngjashëm me atë të mëparshmin, por i projektuar për mjedise ku pajisja është e mbrojtur (PIN, model, biometrikë) dhe duhet të ruhet një kontekst i sigurt.MediaStore.ACTION_VIDEO_CAPTURE: Ndizni kamerën në modalitetin video dhe kthejeni rezultatin në aplikacionin që po e telefonon.MediaStore.ACTION_PICK_IMAGES: hapi zgjedhës fotografish Android modern, i cili ofron një përvojë të unifikuar për zgjedhjen e imazheve dhe videove nga burime të ndryshme (ruajtje lokale, cloud, etj.).MediaStore.ACTION_PICK_IMAGES_SETTINGS: Kjo çon te cilësimet që lidhen me përzgjedhësin e fotove dhe ofruesit e medias.MediaStore.ACTION_REVIEWyMediaStore.ACTION_REVIEW_SECURE: Ato ju lejojnë të rishikoni ose të shikoni paraprakisht përmbajtje multimediale të sapokapur në një kontekst të kontrolluar.
Përveç këtyre qëllimeve, MediaStore përcakton një listë të gjatë shtesash dhe konstantesh që MediaProvider i respekton dhe i përdor për të zbatuar rregulla specifike. Disa shembuj:
EXTRA_DURATION_LIMIT: koha maksimale e lejuar e regjistrimit gjatë xhirimit të videos.EXTRA_SIZE_LIMIT: madhësia maksimale e skedarit të daljes.EXTRA_OUTPUT: URI ku do të ruhet imazhi ose videoja që rezulton.EXTRA_PICK_IMAGES_MAX: numri maksimal i artikujve që përdoruesi mund të zgjedhë në një seancë përzgjedhësi.
Pyetje të avancuara për MediaStore
Aplikacionet që duhet të lexojnë bibliotekën mediatike përdorin pyetje për MediaStore me argumente dhe filtra të ndryshëm. Disa funksionalitete të ekspozuara nga MediaProvider përmes MediaStore janë:
- Filtruar sipas të preferuarave dhe koshit të plehrave: duke përdorur argumentet
QUERY_ARG_MATCH_FAVORITEyQUERY_ARG_MATCH_TRASHEDaplikacionet mund të marrin vetëm artikujt e shënuar si të preferuar ose ato që janë në plehra. - Zbulimi i ndryshimit në rritje: kolona si
GENERATION_ADDEDyGENERATION_MODIFIEDAto ju lejojnë të shihni shpejt se cilat elementë janë shtuar ose modifikuar që nga një sinkronizim i mëparshëm, diçka thelbësore për aplikacionet e kopjimit rezervë ose galeritë e përparuara. - Operacione masive të kontrolluara nga përdoruesi: metoda të tilla si
createDeleteRequest(),createTrashRequest(),createFavoriteRequest()ocreateWriteRequest()lejo aplikacionet propozo ndryshime në grupPor është sistemi që i shfaq përdoruesit një dialog konfirmimi në mënyrë që ai të ketë fjalën e fundit. - Leximi dhe shkrimi i EXIF-it: përmes
ExifInterfaceAplikacionet mund të lexojnë fusha të tilla si orientimi, koha e kapjes, modeli i kamerës, vendndodhja (nëse është e disponueshme dhe e lejuar nga përdoruesi) dhe meta të dhëna të tjera. Kjo është thelbësore për rrotulloni fotot në mënyrë korrekte, renditini ato kronologjikisht ose shfaqni të dhënat e kapjes.
MediaProvider, hapësirë ruajtjeje në cloud dhe Zgjedhës Fotosh

Me mbërritjen e Photo Picker modern dhe ofruesve të mediave të bazuara në cloud , roli i MediaProvider është bërë edhe më i rëndësishëm në rrjedhën e punës së përzgjedhjes së fotove dhe videove.
Android lejon që disa aplikacione, zakonisht shërbime fotografike në cloud të nominuara nga prodhuesit, të veprojnë si CloudMediaProviders . Këto aplikacione i ofrojnë përzgjedhësit të fotove përmbajtje të ruajtur në cloud, në mënyrë që përdoruesi të mund të zgjedhë jo vetëm skedarët lokalë, por edhe ato të ruajtura në shërbime të largëta.
Në këtë skenar, MediaProvider dhe Photo Picker punojnë krah për krah:
- Sistemi inicializon ofruesin e preferuar të cloud-it dhe sinkronizohet periodikisht. metadata multimediale me pjesën e pasme të përzgjedhësit të fotove.
- Kur një aplikacion hap Zgjedhësin e Fotove duke përdorur qëllime si p.sh.
ACTION_PICK_IMAGESoACTION_GET_CONTENT, përzgjedhësi kombinohen në një rrjet të vetëm elementët lokalë të ofruar nga MediaProvider dhe elementët e largët të ofruar nga CloudMediaProvider. - Ndërsa përdoruesi lëviz, përzgjedhësi kërkon miniatura të optimizuara te furnizuesit, në mënyrë që ngarkimi të jetë i shpejtë dhe efikas.
- Pas përfundimit të përzgjedhjes, nëse zgjidhet përmbajtja e reve, sistemi gjeneron URI të sigurta Dhe MediaProvider koordinon, nëpërmjet FUSE dhe shtresave të tjera, aksesin në të dhënat reale, duke ruajtur gjithmonë lejet dhe privatësinë.
CloudMediaProvider, nga ana e tij, ekspozon metoda të tilla si onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()të cilin Zgjedhësi i Fotove e përdor për të listuar artikujt, albumet, përmbajtjen e fshirë dhe për të hapur si pamjet paraprake ashtu edhe skedarin e plotë. Edhe pse këto metoda zbatohen jashtë MediaProvider, moduli media i sistemit integrohet me to për të ofruar një përvojë e vazhdueshme e aksesimit të medias lokale dhe cloud.
MediaProvider dhe transkodimi i pajtueshëm i videos

Një tjetër veçori e përparuar ku MediaProvider luan një rol kyç është transkodimi i përmbajtjes mediatike të pajtueshme . Kjo veçori u lejon pajisjeve të përdorin formate video moderne dhe efikase - të tilla si HEVC ose profile të caktuara HDR - pa prishur pajtueshmërinë me aplikacionet më të vjetra që kuptojnë vetëm formatet klasike si AVC (H.264).
Mekanizmi funksionon si më poshtë:
- Prodhuesit dhe përdoruesit mund ta konfigurojnë kamerën për të regjistro në HEVC si parazgjedhje ose formate të tjera që janë më efikase në hapësirë dhe gjerësi bande.
- Kur një aplikacion që nuk mbështet HEVC Kur përpiqeni të hapni një video përmes MediaStore dhe MediaProvider, sistemi mund të ndërpres leximin e skedarit falë përdorimit të FUSE (Sistemi i skedarëve në hapësirën e përdoruesit).
- Nëse zbulohet se aplikacioni nuk e mbështet formatin, MediaProvider, së bashku me Shërbimi i Transkodimit të Medias, fillon një konvertim në sfond për të gjeneruar një version në AVC ose në një format tjetër të përputhshëm.
- Aplikacioni merr një përshkrues skedari që tregon versionin tashmë të transkoduar (ose origjinalin, nëse aplikacioni e mbështet formatin), në një mënyrë që është plotësisht transparente për zhvilluesin.
Ky proces transkodimi rregullohet nga kufizime kohore dhe burimesh për të parandaluar abuzimin: për shembull, përpunohen vetëm videot deri në një gjatësi të caktuar dhe numri i seancave të njëpasnjëshme ose koha totale e përpunimit për aplikacion është i kufizuar. Nëse tejkalohen këto kufizime, sistemi kthen skedarin origjinal të papërpunuar.
Për ta arritur këtë, arkitektura përfshin disa komponentë:
- MediaTranscodingMenaxher: API i sistemit që lejon MediaProvider dhe pjesë të tjera të kornizës të komunikojnë me shërbimin e transkodimit.
- Shërbimi i Transkodimit të Medias: shërbim që menaxhon radhët e transkodimit, seancat aktive dhe alokimin e burimeve të kodekut.
- MediaTranscoder: biblioteka vendase që kryen konvertimin midis formateve, duke u mbështetur në MediaCodec dhe në shtesa të mundshme OEM për operacione të tilla si konvertimi HDR → SDR.
MediaProvider është në qendër të gjithë kësaj rrjedhe: është moduli që ndërpret përpjekjen për të lexuar skedarët , vendos nëse transkodimi është i nevojshëm apo jo sipas aftësive të aplikacionit dhe në fund jep përshkruesin e saktë, qoftë në skedarin origjinal ose në atë të transkoduar.
Përshtatje dhe Zgjerim: MediaProvider për Zhvilluesit dhe Prodhuesit
Një nga veçoritë më të fuqishme — dhe më pak të njohura — të MediaProvider është aftësia për të personalizuar sjelljen e tij . Kjo është me interes të veçantë për zhvilluesit e ROM-eve të personalizuara, OEM-të dhe prodhuesit , por gjithashtu ndihmon për të kuptuar pse disa pajisje sillen disi ndryshe me formate ose shtigje të caktuara të ruajtjes.
Formatet e mediave të personalizuara
Prodhuesit mund të shtojnë mbështetje për formatet mediatike pronësore ose të pazakonta . Për çdo lloj të ri, ata duhet të:
- Regjistrohu një zgjerim unik i skedarit dhe e shoqëroni atë me një lloj specifik MIME duke
MimeUtils. - Konfiguro modulin Ekstraktori i medias në mënyrë që të mund të lexojë meta të dhënat në atë format, në mënyrë që MediaProvider të mund ta indeksojë atë saktë.
- Në rastin e
video/*yaudio/*, vazhdojnë të mbështeten nëMediaMetadataRetrieverpër të ekspozuar metadatat përkatëse. - Në rastin e
image/*zgjeroni ose përdorniandroid.media.ExifInterfacepër të nxjerrë dhe për t'u kthyer meta të dhëna të normalizuara EXIF madje edhe në formate imazhesh të personalizuara.
Është e rëndësishme të theksohet se ripërcaktimi i shtesave ose llojeve MIME të përcaktuara tashmë në AOSP nuk lejohet , për të shmangur mospërputhjet ose konfliktet midis pajisjeve.
Përzgjedhja e pajisjeve të ruajtjes për indeksim
Indekset e MediaProvider, si parazgjedhje, të gjitha vëllimet e kthyera nga StorageManager.getStorageVolumes() ku StorageVolume.getMediaStoreVolumeName() Nuk është bosh. Megjithatë, prodhuesit e pajisjeve origjinale (OEM) mund të përsosni se cilat vëllime indeksohen themelimi i markës VolumeInfo.MOUNT_FLAG_INDEXABLE në ato pajisje që duan që ato të shfaqen në bibliotekën mediatike.
Rekomandohet të shmangni shënimin e vëllimeve kalimtare si të indeksueshme — siç janë disa disqe USB OTG që lidhen dhe shkëputen shpesh — për të parandaluar mospërputhjet në bazën e të dhënave ose gabimet e shkaktuara nga zhdukja e papritur e vëllimit.
Zëvendësimi dhe Përshtatja e Stivës MTP
Logjika që qëndron pas MTP (Media Transfer Protocol), e përdorur për transferimin e skedarëve midis një pajisjeje celulare dhe një PC-je nëpërmjet USB-së , është ndarë nga moduli MediaProvider. Duke filluar me disa versione, grupi MTP ndodhet tërësisht jashtë modulit dhe garantohet të funksionojë duke përdorur vetëm API-të publike dhe të sistemit.
Kjo u lejon prodhuesve që kanë nevojë për zgjidhje specifike transferimi të zëvendësojnë ose përshtatin pirgun e tyre MTP, për sa kohë që ruajnë përputhshmërinë me kontratat MediaStore dhe MediaProvider , në mënyrë që përvoja e kopjimit dhe leximit të skedarëve nga kompjuteri të mbetet e qëndrueshme.
Dosjet e parazgjedhura dhe lista e përjashtimeve
Kur një vëllim ruajtjeje aktivizohet për herë të parë, MediaProvider zakonisht krijon një seri dosje standarde si Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (Kjo e fundit nuk është e disponueshme në disa versione më të vjetra).
Për pajisjet që kanë kërkesa specifike organizative, prodhuesit e pajisjeve origjinale (OEM) mund të ofrojnë një lista e dosjeve që duhen lënë jashtë gjatë krijimit fillestar përmes mbivendosjes së burimeve config_foldersToSkipInDefaultCreationKështu, për shembull, ata mund të parandalonin krijimin e dosjeve si parazgjedhje. Notifications/ o Ringtones/ nëse ata tashmë kanë një sistem alternativ për ta.
Varësitë dhe Kërkesat Teknike të MediaProvider

Kur personalizojnë MediaProvider, prodhuesit e pajisjeve origjinale (OEM) duhet të marrin në konsideratë një numër varësish teknike për të siguruar që gjithçka të vazhdojë të funksionojë siç duhet:
- Kur përdorni formate jo standarde të skedarëve multimedialëÇdo format duhet të regjistrohet në të dyja formatet
MimeUtilssi në modulin e Ekstraktori i mediasPërndryshe, MediaProvider nuk do të jetë në gjendje t'i indeksojë ato ose të ofrojë meta të dhëna të plota. - Për të siguruar që një grup i personalizuar i pajisjeve të ruajtjes (slote SD, porta USB të integruara, etj.) të indeksohet, zbatimi i
StorageManagerServiceDuhet të shënoni vëllimet e dëshiruara meVolumeInfo.MOUNT_FLAG_INDEXABLE. - Nëse përdoret një pirg MTP i personalizuar, ai duhet të bazohet ekskluzivisht në API-të publike dhe të sistemit për të mbetur i pajtueshëm me MediaStore dhe për të mos ndërprerë bashkëveprimin midis PC-së dhe bibliotekës mediatike të pajisjes.
Për më tepër, në kontekstin e transkodimit të videos, pajisjet duhet të plotësojnë disa kërkesa minimale hardueri : mbështetje për kodimin HEVC të aktivizuar në kamerën origjinale, performancë të mjaftueshme leximi dhe shkrimi në memorie dhe kodekë të aftë për të arritur shkallë të lartë përpunimi në detyrat e konvertimit.
Testimi, diagnoza dhe gabimet e zakonshme të MediaProvider

Në përdorim normal, MediaProvider zakonisht kalon pa u vënë re. Megjithatë, si çdo komponent i sistemit, mund të ketë probleme: mbyllje të papritura , gabime gjatë leximit të skedarëve të caktuar, dështime gjatë përditësimit të meta të dhënave ose bllokime gjatë skanimit të vëllimeve të dëmtuara.
Në ekosistemin Android, ekzistojnë disa teste të automatizuara për të verifikuar funksionimin e saktë të tij:
- Rastet e Testimit të CtsProvider: seti i testimit të Paketa e testimit të përputhshmërisë i cili vërteton sjelljen e API-ve publike të MediaStore kundrejt MediaProvider.
- Testet e MediaProvider: teste të brendshme të përqendruara në sjelljen specifike të modulit dhe komponentëve të tij.
Zhvilluesit ose teknikët mund t'i ekzekutojnë këto paketa testimi me komanda të tilla si:
atest --test-mapping packages/providers/MediaProvider
Në forumet teknike, disa përdorues kanë raportuar Rrëzimet e përsëritura të MediaProvider për shkak të gabimeve të kujtesës (OutOfMemoryError), veçanërisht kur skanoni koleksione shumë të mëdha videosh ose kur trajtoni ndarje të dëmtuara të kartës SD. Në këto raste, këshillohet që të:
- Kontrolloni gjendja fizike e kujtesës së brendshme dhe të jashtme (formatoni ose zëvendësoni kartën nëse ka gabime).
- Mirëmbajtja e sistemit dhe modulet kryesore të përditësuara nga Google Play për të marrë korrigjime.
- Kontrolloni nëse ndonjë aplikacion po gjeneron skedarë të korruptuar ose skedarë me meta të dhëna anormale që shkaktojnë dështime në indeksim.
Mjete dhe shërbime të lidhura me MediaProvider

Nëse doni të mësoni më shumë rreth mënyrës së përditësimit të MediaProvider ose se cilat module Mainline keni instaluar, mund të përdorni disa mjete:
- Përditësuesi i linjës kryesore: një aplikacion i thjeshtë që rendit Modulet kryesore të pranishme në pajisjen tuaj Gjithashtu ofron shkurtore për panelin e përditësimeve të sistemit të Google Play. Kjo është e dobishme për të kontrolluar nëse MediaProvider dhe komponentët e tjerë kritikë janë të përditësuar.
- Menaxheri i Ofruesit të Medias: një modul Xposed me burim të hapur që lejon Monitoroni dhe kufizoni përdorimin e MediaStore nga aplikacionet. Me të, përdoruesit e përparuar mund të shqyrtojnë se cilat aplikacione bëjnë më shumë kërkesa, çfarë lejesh ushtrojnë dhe madje të kufizojnë akses të caktuar për të përmirësuar privatësinë.
Këto lloje mjetesh nuk janë thelbësore për përdoruesin mesatar, por ato ofrojnë një shkallë shtesë kontrolli për ata që duan të menaxhojnë sjelljen multimediale dhe privatësinë në pajisjen e tyre Android në një mënyrë më të detajuar.
MediaProvider është bërë një komponent qendror i sistemit Android: ai organizon në mënyrë efikase të gjithë përmbajtjen multimediale, mbron më mirë privatësinë përmes ruajtjes me hapësirë të gjerë, lehtëson transkodimin e formateve moderne dhe përditësohet në mënyrë të pavarur falë moduleve Mainline. Të kuptuarit se si funksionon ky komponent i padukshëm shpjegon pse sot galeria juaj, aplikacionet muzikore dhe shërbimet cloud funksionojnë më shpejt, më vazhdimisht dhe shumë më sigurt sesa në gjeneratat e mëparshme të sistemit.


