MediaProvider v sistemu Android: kaj je to, kako deluje in zakaj je tako pomemben

  • MediaProvider je modul za Android, ki prek trgovine MediaStore indeksira in izpostavlja fotografije, videoposnetke in zvok aplikacijam, s čimer izboljša delovanje in organizacijo.
  • Je del modulov Mainline, zato je posodobljen iz trgovine Google Play, da se doda združljivost z novimi formati in odpravijo varnostne pomanjkljivosti.
  • Okrepite zasebnost z uporabo omejenega shranjevanja, nadzorom dovoljenj in skrivanjem občutljivih metapodatkov, kot je lokacija fotografije.
  • Proizvajalci originalne opreme in razvijalci lahko prilagodijo podprte formate, nosilce za indeksiranje in izkoristijo napredne funkcije, kot je združljivo video transkodiranje.

Shramba za večpredstavnost MediaProvider za Android

V zadnjih letih se je Android dramatično razvil na področju upravljanja datotek in varnosti sistema. Eden najmanj pojasnjenih elementov – a ključnega pomena za pravilno shranjevanje in zasebnost uporabnikov – je znameniti MediaProviderČe ste se kdaj vprašali, kaj je ta komponenta, zakaj se včasih pojavi v sistemskih sporočilih, katere izboljšave prinaša v posamezni različici Androida ali kako vpliva na vaš telefon, jo bomo tukaj podrobno razčlenili.

Ime MediaProvider je enostavno naleteti med navigacijo po mobilnih nastavitvah, preverjanjem porabe pomnilnika ali pregledovanjem tehničnih forumov, vendar večina ljudi ni povsem prepričana, kaj točno počne ali zakaj je pomembno. bistvenega pomena za nemoteno delovanje aplikacij, kot so fotogalerije, predvajalniki glasbe ali upravitelji datotekOglejmo si temeljit pregled, da boste imeli jasno predstavo o vsem, kar prispeva k vašemu vsakdanjemu življenju z Androidom, ne glede na to, ali želite le bolje razumeti svoj mobilni telefon ali pa razvijate aplikacije ali ROM-e po meri.

Kaj je MediaProvider in kakšna je njegova funkcija v sistemu Android?

Kaj je modul Android MediaProvider?

El Modul MediaProvider Je ena od notranjih komponent sistema Android, ki je odgovorna za upravljajte, indeksirajte in omogočajte dostop do večpredstavnostnih datotek kot so fotografije, videoposnetki in glasba, shranjeni tako v notranjem pomnilniku kot na zunanjih napravah (kartice SD, pogoni USB itd.). To ni običajna aplikacija, ampak Ponudnik sistemske vsebine ki se zanaša na javno bazo podatkov MediaStore da lahko druge aplikacije hitro in varno dostopajo do večpredstavnostne vsebine.

Njegovo glavno poslanstvo je sestavljeno iz analizirati datoteke, izvleči njihove metapodatke in jih indeksirati v optimiziranih tabelah. Ti metapodatki vključujejo elemente, kot so vrsta datoteke, trajanje videa ali zvoka, ločljivost slike, datum zajemanja, velikost, lokacija v shrambi ali v nekaterih primerih napredni podatki EXIF fotografij.

Zahvaljujoč temu modulu, Aplikacije lahko prikažejo celotno knjižnico, ne da bi se morali ročno pomikati po celotnem drevesu map.Fotogalerija na primer ne potrebuje pregleda vseh imenikov: pošlje poizvedbo v MediaStore in v milisekundah dobi oštevilčen seznam vseh slik, razvrščenih in filtriranih po potrebi. To Znatno izboljša zmogljivost in porabo baterije v primerjavi z neposrednim pregledovanjem datotečnega sistema.

MediaProvider se integrira tudi z modelom shranjevanje z dosegom (obsežno shranjevanje). V praksi to pomeni, da modul velja varnostna pravila za nadzor, katere aplikacije si lahko ogledajo in spremenijo določene datoteke. Na primer skrije ali zabriše občutljive metapodatke na primer natančna lokacija, kjer je bila fotografija posneta, kadar aplikacija teh podatkov ne potrebuje ali nima ustreznih dovoljenj.

Drugi ključni vidik je ta MediaProvider je del tako imenovanih glavnih modulov. (ali nadgradljive sistemske module), kar Googlu in proizvajalcem omogoča posodobite ga neodvisno prek trgovine Google PlayNa ta način se odpravijo varnostne pomanjkljivosti, doda združljivost z novimi formati datotek in izboljšajo funkcije, ne da bi bilo treba čakati na popolno posodobitev sistema.

Kako MediaProvider vpliva na vaše vsakdanje življenje

MediaProvider v vsakodnevni uporabi

Čeprav ga ne vidite, MediaProvider nenehno deluje v ozadju. Nekaj ​​​​jasnih primerov, kako vpliva na vašo vsakodnevno izkušnjo, je:

  • Hitro odpiranje galerije: Ko odprete aplikacijo za fotografije, ta povpraša MediaStore in zaradi predhodnega indeksiranja modula lahko skoraj v trenutku prikaže vaše slike.
  • Išče po datumu, vrsti ali albumu: Številne galerije omogočajo filtriranje po videoposnetkih, selfijih, posnetkih zaslona ali določenih datumih. Vse te informacije prihajajo iz metapodatke upravlja MediaProvider.
  • Predvajalniki glasbe in podkastov: Seznami po izvajalcu, albumu, žanru ali seznamih predvajanja temeljijo na podatkih, ki jih je MediaProvider zbral in normaliziral iz zvočnih datotek.
  • Aplikacije za sporočanje in družbena omrežja: Ko delite fotografijo iz WhatsAppa, Telegrama ali Instagrama z uporabo izbirnika slik, so te dejansko branje kataloga MediaStore in filtriranje po vrsti zahtevane vsebine.
  • Upravitelji datotek: Nekateri brskalniki uporabljajo poizvedbe MediaStore za hiter seznam vseh večpredstavnostnih vsebin, namesto da bi morali ročno brskati po tisočih map in datotek.

Tudi manj vidna opravila, kot je fotografija, posneta s kamero, ki se v nekaj sekundah pojavi v galeriji ali oblaku, so običajno usklajena z MediaProviderjem, ki je odgovoren za registrirati nov element, izvleči njegove metapodatke in obvestiti o spremembah zainteresiranim prijavam.

Razvoj MediaProviderja: od Androida 10 do Androida 11 in naprej

Posodobitve ponudnika medijev

Velik preskok v razvoju MediaProviderja se je začel s prihodom shranjevanje z dosegom v sistemu Android 10. Od tistega trenutka naprej je sistem reorganiziral način prepoznavanja medijskih datotek in način njihove izpostavljenosti aplikacijam, zaradi česar je MediaProvider postal veliko pametnejši in varnejši.

Spremembe, uvedene z Androidom 10

Od te različice je Android uvedel več ključnih izboljšav, povezanih z identifikacija in ekstrakcija podatkov iz multimedijskih datotek:

  • Sistem določi, tip vsebine datoteke z uporabo prvega dela tipa MIMENa primer, ve, da image/png y image/x-newly-invented-format Oba sta vrste slikTo omogoča boljši opis dovoljenj in povezanega vedenja za uporabnika.
  • Za izboljšanje varnosti iz končnice izpelji samo tip MIME iz datoteke, s čimer se izognete tehnikam zaznavanja vsebine, ki bi lahko odkrile ranljivosti.
  • Odločitev MIME temelji na kombinacija tabel, podedovanih iz Debian Linuxa in lastnih definicij AndroidaTo ima za posledico veliko bolj zanesljivo in dosledno zaznavanje nenavadnih formatov.
  • MediaProvider pridobivanje naprednih metapodatkov prenese na specializirana orodja: MediaMetadataRetriever za datoteke video/* y audio/*, In ExifInterface za datoteke image/*, s čimer dobimo trajanje, bitna hitrost, ločljivost, orientacija, podatki o kameri in druge koristne informacije.

Ta sklop sprememb je aplikacijam omogočil prejemanje bolj zanesljivi in ​​standardizirani metapodatkiHkrati so bili okrepljeni varnostni ukrepi in postavljeni temelji za sofisticirana dovoljenja za dostop, ki jih poznamo danes.

Izboljšave, uvedene od Androida 11 naprej

Z Androidom 11 je MediaProvider gradil na teh temeljih in naredil še en korak naprej v organizacija vsebine, delovanje in zmogljivosti za aplikacije:

  • So narejeni obsežne izboljšave indeksiranja datotek in metapodatkov. Modul zdaj usklajuje razpoložljive metapodatke s tem, kar razkrivajo API-ji MediaStore, in tako bolje uskladi tisto, kar je shranjeno interno, s tem, kar lahko aplikacije poizvedujejo.
  • V podatkovno bazo so bili dodani novi stolpci, kot npr. is_favorite in argument za posvetovanje QUERY_ARG_MATCH_FAVORITETo omogoča aplikacije galerijskega tipa Hitro filtrirajte vsebino, označeno kot priljubljena uporabnik.
  • MediaProvider je začel metapodatki barvnega prostora indeksabistveno za obdelavo HDR vsebin, fotografije, ki so bolj realistične, in natančnejšo predstavitev na naprednih zaslonih.
  • Kolumna je bila predstavljena is_trashed in argument QUERY_ARG_MATCH_TRASHED jasno razlikovati datoteke, ki so v reciklirati košarokar galerijam omogoča, da izvorno upravljajo s tem košem za smeti.
  • Pojavili so se Novi API-ji za množične operacije na več elementih z enim samim uporabniškim potrditvenim oknom, vključno z:
    • createDeleteRequest() za brisanje več datotek hkrati.
    • createFavoriteRequest() označiti ali odznačiti več priljubljenih z enim samim dejanjem.
    • createTrashRequest() za pošiljanje paketov datotek neposredno v koš.
    • createWriteRequest() zahtevati dovoljenja za pisanje za več elementov.
  • Dodani so bili novi stolpci, kot npr. GENERATION_ADDED y GENERATION_MODIFIED ki omogočajo aplikacije hitro zazna, kaj se je spremenilo od prejšnje sinhronizacije. brez ponovnega skeniranja celotne knjižnice.
  • Dodan je bil eden Javni API za GROUP BY kar vam omogoča združevanje rezultatov po albumu, datumu ali drugih metapodatkih, ne da bi morali v aplikaciji izvajati zapleteno naknadno obdelavo.
  • Izboljšano je bilo ExifInterface za Izvleček metapodatkov iz vsebnikov PNG in WebP, s čimer se širi število slikovnih formatov, ki se obdelujejo na napreden način.
  • SystemUI je začel pisati metapodatke DateTimeOriginal na posnetkih zaslona, ​​da lahko MediaProvider za boljšo organizacijo in prikaz teh vrst slik znotraj galerij.

Kar zadeva arhitekturo, je MediaProvider prešel na format APK-v-APEX-uTo pomeni, da je koda Java zapakirana kot APK znotraj vsebnika APEX na sistemski ravni. Prednost je, da lahko modul polniti zelo zgodaj na začetku, še pred mnogimi deli ogrodja in hkrati izkoristite prednosti hitrih posodobitev prek trgovine Google Play.

Modula MediaProvider in Mainline: Samostojne posodobitve v sistemu Android

Glavni moduli v Androidu

Ena glavnih Googlovih strategij za boj proti razdrobljenosti in ponudbo varnejših naprav je ustvarjanje Glavni moduliTo so sistemske komponente, ki jih je mogoče posodobiti neodvisno od trgovine Google Play, brez neposrednega posredovanja proizvajalca ali potrebe po namestitvi celotne posodobitve OTA.

Ti moduli poleg MediaProviderja vključujejo še druge, kot so ART (okolje za izvajanje aplikacij), Conscrypt (kriptografska knjižnica), mediji, Medijski kodeki, Wi-Fi, privezovanje in še veliko več. Skupaj omogočajo Androidu Odpravite kritične napake, izboljšajte delovanje in dodajte funkcije ne da bi bili popolnoma odvisni od urnika posameznega proizvajalca.

Pomembno je pojasniti, da čeprav se je modularna arhitektura začela uvajati z Androidom 10, MediaProvider je bil še posebej navdušen nad možnostjo nadgradnje Mainline, ki se je začela z Androidom 11.Zahvaljujoč temu, če se med indeksiranjem zazna varnostna napaka, nezdružljivost z novimi večpredstavnostnimi formati ali težava z zmogljivostjo, Google ga lahko popravi in ​​izda posodobitev tako kot katera koli druga aplikacija v trgovini Google Play. Na ta način vaš telefon ostane bolj povezan. varno in dosledno s preostalim ekosistemom, tudi če vaš proizvajalec ni posebej hiter pri izdajanju novih različic Androida.

Kateri drugi moduli Mainline obstajajo in kako je MediaProvider povezan z njimi?

Glavni moduli, povezani z MediaProviderjem

MediaProvider je le eden od mnogih Glavni moduli s ciljem, da bi bil sistem bolj modularen, varen in enostaven za nadgradnjo. Nekateri najpomembnejši, zlasti tisti, povezani z multimedijsko in omrežno izkušnjo, so:

  • Mediji: Obdeluje večpredstavnostne datoteke na mobilni napravi, vključno s storitvami predvajanja, zajemanja in upravljanja pretakanja.
  • Medijski kodeki: Posodablja avdio in video kodeke, kar omogoča izboljšano združljivost in varnost pri dekodiranju in kodiranju, ne da bi se pri tem dotaknil celotnega sistema.
  • UMETNOST: Upravlja okolje izvajanja aplikacije (prevajanje, optimizacija bajtne kode itd.). Izboljšave v tem modulu neposredno vplivajo na zmogljivost aplikacije.
  • Šifriranje: Posodobi kriptografski del sistema, ki je ključnega pomena za varne povezave, potrdila in šifriranje.
  • Wi-Fi: Vsebuje logiko povezljivosti Wi-Fi, ki omogoča uporabo Izboljšave stabilnosti, združljivosti in varnosti brez polnega OTA.
  • Povezovanje: Nadzorujte skupno rabo povezav Wi-Fi, USB, Bluetooth ali Ethernet prek mobilne naprave.
  • Nadzornik dovoljenj: Posodobite modul, ki upravlja dovoljenja in elemente vmesnika za zasebnost za uporabnike.

MediaProvider je tesno povezan z moduli programa mediji y Medijski kodekisaj so slednji odgovorni za dekodiranje in obdelavo vsebine, ki jo indeksira MediaProvider. Ko pridejo novi formati ali se prilagodijo obstoječi kodeki, lahko MediaProvider začne prepoznati in katalogizirati te formate sodobnejše (na primer nove različice HEVC, HDR ali zvočnih kodekov) brez potrebe po posodobitvi celotnega Androida, pod pogojem, da so bili posodobljeni tudi ostali medijski moduli.

Če želite ugotoviti, katere module Mainline podpira vaša mobilna naprava, lahko uporabite orodja, kot je brezplačna aplikacija Mainline Updaterki prikazuje, kateri moduli so prisotni, in vas s pritiskom na gumb preusmeri v razdelek Posodobitve sistema Google PlayTam boste videli, ali obstajajo kakšni čakajoči popravki, ki med drugim vplivajo na MediaProvider.

MediaProvider, zasebnost in varnost shranjevanja

Ponudnik zasebnosti in medijev

Eden pomembni nedavni napredki Z MediaProviderjem je povezana zaščita zasebnost uporabnikaPrej so lahko številne aplikacije dostopale do celotnih map na zunanjem pomnilniku in brale zelo podrobne metapodatke – vključno z lokacijo GPS, vdelano v fotografije – brez natančnega nastavljanja sistema.

S kombinacijo omejeno shranjevanje + ponudnik medijev + shramba medijevStvari so se spremenile:

  • Aplikacije imajo omejen dostop do fotografij, videoposnetkov in zvoka. Aplikacija za urejanje fotografij lahko na primer dostopa do določene slike, ki jo uporabnik izbere prek izbirnik fotografijne pa preostale galerije.
  • Ponudnik medijev lahko uredite ali omejite občutljive metapodatke, kot so natančna lokacija zajema ali podatki o notranji kameri, če aplikacija teh podatkov ne potrebuje.
  • Dovoljenj je več zrnat in prozorenNe gre več za to, da bi dovolili ali zavrnili poln dostop do shrambe, temveč za to, da bi odobrili dostop do posebne vrste vsebine (slike, videoposnetki, zvok) ali celo datoteke, ki jih izbere uporabnik.
  • Zaščita pred zlonamernimi aplikacijami, ki poskušajo skenirati shrambo za zasebne dokumente ali občutljivo vsebino, je okrepljena. MediaProvider deluje kot filter in sodnik tega, kar je mogoče videti ali spremeniti.

Vse to je združeno z možnostmi naprednih izkušenj, kot so npr. Najnovejši izbirnik fotografij in ponudniki medijev v oblaku, katerega del v podatkovnem toku je tudi MediaProvider.

API-ji in primeri uporabe: Kako aplikacije komunicirajo s storitvijo MediaProvider

Aplikacije, ki uporabljajo MediaProvider

Uporabniške aplikacije ne komunicirajo neposredno z MediaProviderjem, temveč prek MediaStoreJavni API deluje kot vmesnik. Ta API ponuja celoten ekosistem namere, konstante in metode poizvedb za dostop do večpredstavnostnih datotek na standardiziran način.

Poskusi zajemanja in izbire vsebine

Med najvidnejšimi nameni, ki izkoriščajo MediaStore (in posledično MediaProvider), so:

  • MediaStore.ACTION_IMAGE_CAPTURE: Omogoča vam, da zaženete kamero, da zajamete sliko in jo vrnete v klicno aplikacijo.
  • MediaStore.ACTION_IMAGE_CAPTURE_SECURE: Podobno kot prejšnje, vendar zasnovano za okolja, kjer je naprava zaščitena (PIN, vzorec, biometrija) in je treba ohraniti varen kontekst.
  • MediaStore.ACTION_VIDEO_CAPTURE: Zaženite kamero v video načinu in rezultat vrnite klicni aplikaciji.
  • MediaStore.ACTION_PICK_IMAGES: odprite izbirnik fotografij sodoben Android, ki ponuja enotno izkušnjo izbiranja slik in videoposnetkov iz različnih virov (lokalna shramba, oblak itd.).
  • MediaStore.ACTION_PICK_IMAGES_SETTINGS: To vodi do nastavitev, povezanih z izbirnikom fotografij in ponudniki medijev.
  • MediaStore.ACTION_REVIEW y MediaStore.ACTION_REVIEW_SECURE: Omogočajo vam pregled ali predogled na novo zajete večpredstavnostne vsebine v nadzorovanem kontekstu.

Poleg teh namenov MediaStore definira dolg seznam dodatki in konstante ki jih MediaProvider spoštuje in uporablja za uporabo določenih pravil. Nekaj ​​primerov:

  • EXTRA_DURATION_LIMIT: najdaljši dovoljeni čas snemanja pri snemanju videa.
  • EXTRA_SIZE_LIMIT: največja velikost izhodne datoteke.
  • EXTRA_OUTPUT: URI, kjer bo shranjena nastala slika ali videoposnetek.
  • EXTRA_PICK_IMAGES_MAX: največje število elementov, ki jih lahko uporabnik izbere v seji izbirnika.

Napredne poizvedbe za MediaStore

Aplikacije, ki morajo brati medijsko knjižnico, uporabljajo Poizvedbe o MediaStoreu z različnimi argumenti in filtri. Nekatere funkcionalnosti, ki jih ponuja MediaProvider prek MediaStore, so:

  • Filtrirano po priljubljenih in koših: z uporabo argumentov QUERY_ARG_MATCH_FAVORITE y QUERY_ARG_MATCH_TRASHEDaplikacije lahko dobijo samo elementi, označeni kot priljubljeni ali tiste, ki so v smeteh.
  • Zaznavanje postopnih sprememb: stolpci, kot so GENERATION_ADDED y GENERATION_MODIFIED Omogočajo vam hiter pregled elementov, ki so bili dodani ali spremenjeni od prejšnje sinhronizacije, kar je ključnega pomena za aplikacije za varnostno kopiranje ali napredne galerije.
  • Uporabniško nadzorovane množične operacije: metode, kot so createDeleteRequest(), createTrashRequest(), createFavoriteRequest() o createWriteRequest() dovoli aplikacije predlagajte spremembe serijeVendar pa je sistem tisti, ki uporabniku prikaže potrditveno pogovorno okno, da ima zadnjo besedo.
  • Branje in pisanje EXIF-ov: prek ExifInterfaceAplikacije lahko berejo polja, kot so orientacija, čas zajemanja, model kamere, lokacija (če je na voljo in če jo uporabnik dovoli) in drugi metapodatki. To je ključnega pomena za pravilno zasukajte fotografije, jih kronološko razvrstite ali prikažite podatke o zajemu.

MediaProvider, shramba v oblaku in izbirnik fotografij

Ponudnik medijev in shramba v oblaku

S prihodom Sodoben izbirnik fotografij in ponudniki multimedijskih vsebin v oblakuVloga MediaProviderja je postala še bolj pomembna v delovnem procesu izbire fotografij in videoposnetkov.

Android omogoča, da nekatere aplikacije, običajno storitve za fotografije v oblaku, ki jih predlaga proizvajalec, delujejo kot Ponudnik medijev v oblakuTe aplikacije ponujajo vsebina, shranjena v oblaku v izbirnik fotografij, tako da lahko uporabnik izbere ne le lokalne datoteke, temveč tudi tiste, shranjene na oddaljenih storitvah.

V tem primeru MediaProvider in Photo Picker delujeta z roko v roki:

  1. Sistem inicializira prednostnega ponudnika v oblaku in ga periodično sinhronizira. večpredstavnostni metapodatki z zalednim delom izbirnika fotografij.
  2. Ko aplikacija zažene izbirnik fotografij z uporabo namenov, kot je ACTION_PICK_IMAGES o ACTION_GET_CONTENT, selektor združite v eno samo mrežo lokalni elementi, ki jih zagotavlja MediaProvider, in oddaljeni elementi, ki jih zagotavlja CloudMediaProvider.
  3. Med pomikanjem uporabnika selektor prikaže poziv optimizirane sličice dobaviteljem, da je nakladanje hitro in učinkovito.
  4. Po zaključku izbire, če je izbrana vsebina v oblaku, sistem ustvari Varni URI-ji MediaProvider pa prek FUSE in drugih plasti usklajuje dostop do dejanskih podatkov, pri čemer vedno varuje dovoljenja in zasebnost.

CloudMediaProvider pa razkriva metode, kot so onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()ki ga Izbirnik fotografij uporablja za seznam elementov, albumov, izbrisane vsebine ter za odpiranje predogledov in celotne datoteke. Čeprav so te metode implementirane zunaj MediaProviderja, se medijski modul sistema integrira z njimi, da ponudi dosledna izkušnja dostopa do lokalnih in oblačnih medijev.

MediaProvider in združljivo video transkodiranje

Prekodiranje videa in ponudnik medijev

Druga napredna funkcija, pri kateri ima MediaProvider ključno vlogo, je združljivo transkodiranje večpredstavnostnih vsebinTa funkcija omogoča napravam uporabo sodobnih in učinkovitih video formatov – kot sta HEVC ali določeni profili HDR – brez prekinitve združljivosti s starejšimi aplikacijami, ki razumejo le klasične formate, kot je AVC (H.264).

Mehanizem deluje na naslednji način:

  • Proizvajalci in uporabniki lahko konfigurirajo kamero tako, da privzeto snemajte v HEVC ali druge oblike, ki so učinkovitejše glede prostora in pasovne širine.
  • Ko aplikacija, ki ne podpira HEVC-ja Ko poskušate odpreti videoposnetek prek MediaStore in MediaProvider, lahko sistem prestreči branje datoteke zahvaljujoč uporabi FUSE (Datotečni sistem v uporabniškem prostoru).
  • Če se zazna, da aplikacija ne podpira formata, MediaProvider skupaj z Storitev prekodiranja medijev, sproži pretvorbo v ozadju za ustvarjanje različice v AVC ali drugi združljivi obliki.
  • Aplikacija prejme deskriptor datoteke, ki kaže na že prekodirano različico (ali izvirnik, če aplikacija podpira obliko zapisa) na način, ki je za razvijalca popolnoma pregleden.

To prekodiranje ureja omejitve trajanja in viri Da bi preprečili zlorabo: na primer, obdelajo se samo videoposnetki do določene dolžine, število zaporednih sej ali skupni čas obdelave na aplikacijo pa je omejen. Če so te omejitve presežene, sistem vrne izvirno, neobdelano datoteko.

Da bi to dosegli, arhitektura vključuje več komponent:

  • Upravitelj prekodiranja medijev: Sistemski API, ki omogoča MediaProviderju in drugim delom ogrodja komunikacijo s storitvijo transkodiranja.
  • Storitev prekodiranja medijev: storitev, ki upravlja čakalne vrste za transkodiranje, aktivne seje in dodeljevanje virov kodeka.
  • Prekodirnik medijev: izvorna knjižnica, ki izvaja pretvorbo med formati, pri čemer se zanaša na MediaCodec in v morebitnih dodatkih proizvajalcev originalne opreme za operacije, kot je pretvorba HDR → SDR.

MediaProvider je v središču celotnega toka: to je modul, ki prestreže poskus branja datotekNa podlagi zmogljivosti aplikacije se odloči, ali je transkodiranje potrebno ali ne, in na koncu dostavi pravilen deskriptor, bodisi izvirni bodisi transkodirani datoteki.

Prilagajanje in razširitev: MediaProvider za razvijalce in proizvajalce

Razvijalci in ponudniki medijev

Eden najmočnejših – in najmanj znanih – vidikov MediaProviderja je zmožnost prilagodite svoje vedenjeTa del je še posebej zanimiv za Razvijalci ROM-ov po meri, proizvajalci originalne opreme in proizvajalciVendar pa pomaga tudi razumeti, zakaj se nekatere naprave obnašajo nekoliko drugače z določenimi formati ali potmi shranjevanja.

Oblike medijev po meri

Proizvajalci lahko dodajo podporo za lastniške ali nenavadne medijske formateZa vsako novo vrsto morajo:

  • Registrirajte se edinstvena pripona datoteke in ga povežite z določenim tipom MIME tako, da MimeUtils.
  • Konfigurirajte modul Izvleček medijev da lahko prebere metapodatke v tej obliki, da jih lahko MediaProvider pravilno indeksira.
  • V primeru video/* y audio/*, se še naprej zanašati na MediaMetadataRetriever za razkritje ustreznih metapodatkov.
  • V primeru image/*podaljšati ali uporabiti android.media.ExifInterface izvleči in vrniti normalizirani metapodatki EXIF tudi v slikovnih formatih po meri.

Pomembno je omeniti, da ni dovoljeno na novo definirajte razširitve ali tipe MIME, ki so že definirani v AOSPda se izognete neskladjem ali konfliktom med napravami.

Izbira pomnilniških naprav za indeksiranje

MediaProvider privzeto indeksira vse nosilce, ki jih vrne StorageManager.getStorageVolumes() če StorageVolume.getMediaStoreVolumeName() Ni ni nič. Vendar pa lahko proizvajalci originalne opreme natančneje določite, kateri nosilci so indeksirani vzpostavitev blagovne znamke VolumeInfo.MOUNT_FLAG_INDEXABLE na tistih napravah, ki želijo, da se prikažejo v medijski knjižnici.

Priporočljivo je Izogibajte se označevanju prehodnih količin kot indeksiranih – na primer nekateri pogoni USB OTG, ki se pogosto priklapljajo in odklapljajo – da se prepreči nastanek nedoslednosti v zbirki podatkov ali napak, ko nosilec nenadoma izgine.

Zamenjava in prilagoditev sklada MTP

Logika protokola MTP (Media Transfer Protocol), ki se uporablja za Prenos datotek med mobilnim telefonom in računalnikom prek USB-jaPostopoma je bil ločen od meje modula MediaProvider. Od nekaterih različic naprej se sklad MTP nahaja v celoti zunaj modula in zagotovljeno deluje samo z uporabo Javni in sistemski API-ji.

To omogoča proizvajalcem, ki potrebujejo specifične rešitve za prenos, da zamenjajo ali prilagodijo svoj sklad MTP, če le ohranijo združljivost z Pogodbe MediaStore in MediaProvidertako da izkušnja kopiranja in branja datotek iz računalnika ostane dosledna.

Privzete mape in seznam izključitev

Ko je shranjevalni nosilec prvič aktiviran, MediaProvider običajno ustvari vrsto standardne mape kot Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (Zadnja možnost ni na voljo v nekaterih starejših različicah).

Za naprave, ki imajo posebne organizacijske zahteve, lahko proizvajalci originalne opreme zagotovijo seznam map, ki jih je treba izpustiti med začetnim ustvarjanjem prek prekrivanja virov config_foldersToSkipInDefaultCreationTako bi lahko na primer preprečili privzeto ustvarjanje map. Notifications/ o Ringtones/ če že imajo zanje alternativni sistem.

Odvisnosti in tehnične zahteve ponudnika medijev

Tehnične zahteve ponudnika medijev

Pri prilagajanju programa MediaProvider bi morali proizvajalci originalne opreme (OEM) upoštevati številne tehnične odvisnosti da zagotovite, da vse še naprej deluje pravilno:

  • Pri uporabi nestandardne oblike večpredstavnostnih datotekVsaka oblika mora biti registrirana v obeh MimeUtils kot v modulu Izvleček medijevV nasprotnem primeru jih MediaProvider ne bo mogel indeksirati ali zagotoviti celotnih metapodatkov.
  • Da bi zagotovili indeksiranje prilagojenega nabora pomnilniških naprav (reže za SD kartice, vgrajena vrata USB itd.), je bila izvedba StorageManagerService Želene količine morate označiti z VolumeInfo.MOUNT_FLAG_INDEXABLE.
  • Če se uporablja sklad MTP po meri, mora temeljiti izključno na Javni in sistemski API-ji da ostane združljiv z MediaStore in ne prekinja interakcije med računalnikom in medijsko knjižnico naprave.

Poleg tega morajo naprave v kontekstu video transkodiranja izpolnjevati določene zahteve. minimalne zahteve glede strojne opreme: V izvorni kameri je omogočena podpora za kodiranje HEVC, zadostna zmogljivost branja in pisanja v pomnilniku ter kodeki, ki lahko dosežejo visoke hitrosti obdelave pri pretvorbi.

Testiranje, diagnosticiranje in pogoste napake MediaProviderja

Pogoste težave z MediaProviderjem

Pri normalni uporabi MediaProvider običajno ostane neopažen. Vendar pa lahko tako kot vsaka sistemska komponenta pride tudi do težav: nepričakovana zapiranja, napake pri branju določenih datotek, neuspehi pri posodabljanju metapodatkov ali blokade pri skeniranju poškodovanih nosilcev podatkov.

V ekosistemu Android obstaja več avtomatizirani testi za preverjanje njegovega pravilnega delovanja:

  • Testni primeri ponudnika Cts: testni niz Zbirka testov združljivosti ki preverja delovanje javnih API-jev MediaStore v primerjavi s MediaProviderjem.
  • Testi ponudnika medijev: interni testi, osredotočeni na specifično vedenje modula in njegovih komponent.

Razvijalci ali tehniki lahko te testne pakete zaženejo z ukazi, kot so:

atest --test-mapping packages/providers/MediaProvider

Na tehničnih forumih so nekateri uporabniki poročali Ponavljajoče se zrušitve MediaProviderja zaradi napak v pomnilniku (OutOfMemoryError), zlasti pri skeniranju zelo velikih video zbirk ali delu s poškodovanimi particijami SD kartice. V teh primerih je priporočljivo:

  • Preverite fizično stanje notranjega in zunanjega pomnilnika (formatirajte ali zamenjajte kartico, če so na njej napake).
  • Vzdrževanje sistema in posodobljeni glavni moduli iz trgovine Google Play za prejemanje popravkov.
  • Preverite, ali katera aplikacija ustvarja poškodovane datoteke ali datoteke z nepravilnimi metapodatki ki povzročajo napake pri indeksiranju.

Orodja in pripomočki, povezani z MediaProviderjem

Orodja za ogled glavnih modulov

Če želite izvedeti več o tem, kako se MediaProvider posodablja ali katere module Mainline imate nameščene, lahko uporabite nekaj orodij:

  • Glavni posodobitveni program: preprosta aplikacija, ki navaja Glavni moduli, prisotni v vaši napravi Ponuja tudi bližnjice do plošče s posodobitvami sistema Google Play. To je uporabno za preverjanje, ali so vaš MediaProvider in druge kritične komponente posodobljene.
  • Vodja ponudnika medijev: odprtokodni modul Xposed, ki omogoča Spremljajte in omejujte uporabo trgovine MediaStore aplikacije. Z njim lahko napredni uporabniki pregledajo, katere aplikacije pošiljajo največ zahtev, katera dovoljenja izvajajo in celo omejijo določen dostop za izboljšanje zasebnosti.

Ta orodja niso bistvena za povprečnega uporabnika, vendar zagotavljajo dodatno stopnjo nadzora tistim, ki želijo učinkovito upravljati svoje sisteme. bolj podrobno delovanje večpredstavnostnih vsebin in zasebnost v napravi Android.

MediaProvider je postal osrednja komponenta sistema Android: učinkovito organizira vse večpredstavnostne vsebine, bolje ščiti zasebnost s shranjevanjem z velikim obsegom, omogoča prekodiranje sodobnih formatov in se neodvisno posodablja zahvaljujoč modulom Mainline. Razumevanje delovanja te nevidne komponente pojasnjuje, zakaj danes vaša galerija, glasbene aplikacije in storitve v oblaku delujejo hitreje, dosledneje in veliko varneje kot v prejšnjih generacijah sistema.