
Viime vuosina Android on kehittynyt dramaattisesti tiedostojenhallinnan ja järjestelmän turvallisuuden suhteen. Yksi vähiten selitetyistä elementeistä – mutta elintärkeä asianmukaisen tallennuksen ja käyttäjien yksityisyyden kannalta – on kuuluisa MediantarjoajaJos olet joskus miettinyt, mikä tuo komponentti on, miksi se joskus näkyy järjestelmäviesteissä, mitä parannuksia se tuo jokaiseen Android-versioon tai miten se vaikuttaa puhelimeesi, aiomme eritellä sen tässä yksityiskohtaisesti.
Nimeen MediaProvider törmää helposti mobiiliasetuksia selaillessa, tallennustilan käyttöä tarkistaessa tai teknisillä foorumeilla keskustellessa, mutta useimmat ihmiset eivät ole varmoja, mitä se tarkalleen ottaen tekee tai miksi se on tärkeä. välttämätön sovellusten, kuten valokuvagallerioiden, musiikkisoittimien tai tiedostonhallintaohjelmien, sujuvalle toiminnalleAnnetaanpa sille perusteellinen katsaus, jotta ymmärrät kaiken, mitä se tuo jokapäiväiseen elämääsi Androidin kanssa, halusitpa sitten vain ymmärtää paremmin matkapuhelintasi tai kehitätpä mukautettuja sovelluksia tai ROM-levyjä.
Mikä on MediaProvider ja mitä se tekee Androidissa?
El MediaProvider-moduuli Se on yksi Android-järjestelmän sisäisistä komponenteista, jotka vastaavat hallita, indeksoida ja tarjota pääsy multimediatiedostoihin kuten valokuvia, videoita ja musiikkia, jotka on tallennettu sekä sisäiseen muistiin että ulkoisiin laitteisiin (SD-kortit, USB-asemat jne.). Se ei ole tavallinen sovellus, vaan Järjestelmän sisällöntarjoaja joka perustuu julkiseen tietokantaan MediaStore jotta muut sovellukset voivat käyttää multimediasisältöä nopeasti ja turvallisesti.
Sen päätehtävä koostuu analysoida tiedostoja, poimia niiden metatiedot ja indeksoida ne optimoiduissa taulukoissa. Näihin metatietoihin kuuluvat esimerkiksi tiedostotyyppi, videon tai äänen kesto, kuvan resoluutio, kuvauspäivämäärä, koko, tallennussijainti tai joissakin tapauksissa edistyneet EXIF-tiedot valokuvista.
Tämän moduulin ansiosta Sovellukset voivat näyttää koko kirjastosi ilman, että sinun tarvitsee manuaalisesti selata koko kansiopuuta.Esimerkiksi valokuvagallerian ei tarvitse skannata jokaista hakemistoa: se lähettää kyselyn MediaStoreen ja saa millisekunneissa sivutetun luettelon kaikista kuvista, jotka on lajiteltu ja suodatettu tarpeen mukaan. Se parantaa huomattavasti suorituskykyä ja akun kulutusta verrattuna suoraan tiedostojärjestelmän tarkistukseen.
MediaProvider integroituu myös malliin säilytystilaa ulottuvilla (laajuusalueeseen kuuluva tallennustila). Käytännössä tämä tarkoittaa, että moduuli soveltuu turvallisuussäännöt hallita sitä, mitkä sovellukset voivat tarkastella ja muokata tiettyjä tiedostoja. Esimerkiksi piilottaa tai sensuroi arkaluontoisia metatietoja kuten tarkka sijainti, jossa kuva on otettu, kun sovellus ei tarvitse kyseisiä tietoja tai sillä ei ole tarvittavia käyttöoikeuksia.
Toinen keskeinen näkökohta on se MediaProvider on osa niin kutsuttuja Mainline-moduuleja (tai päivitettäviä järjestelmämoduuleja), joiden avulla Google ja valmistajat voivat päivitä se itsenäisesti Google Playn kauttaTällä tavoin korjataan tietoturva-aukkoja, lisätään yhteensopivuus uusien tiedostomuotojen kanssa ja parannetaan ominaisuuksia odottamatta täydellistä järjestelmäpäivitystä.
Miten MediaProvider vaikuttaa jokapäiväiseen elämääsi
Vaikka et näe sitä, MediaProvider toimii jatkuvasti taustalla. Joitakin selkeitä esimerkkejä siitä, miten se vaikuttaa päivittäiseen käyttökokemukseesi:
- Galleria-avajaiset lyhyesti: Kun avaat valokuvat-sovelluksen, se tekee kyselyn MediaStoresta ja moduulin aiemman indeksoinnin ansiosta voi näyttää kuvasi lähes välittömästi.
- Haku päivämäärän, tyypin tai albumin mukaan: Monissa gallerioissa voit suodattaa videoiden, selfieiden, kuvakaappausten tai tiettyjen päivämäärien mukaan. Kaikki nämä tiedot ovat peräisin MediaProviderin hallinnoimat metatiedot.
- Musiikki- ja podcast-soittimet: Artistin, albumin, genren tai soittolistojen mukaiset listat perustuvat MediaProviderin äänitiedostoista keräämiin ja normalisoimiin tietoihin.
- Viesti- ja sosiaalisen median sovellukset: Kun jaat kuvan WhatsAppista, Telegramista tai Instagramista kuvanvalitsimen avulla, ne ovat itse asiassa MediaStore-luettelon lukeminen ja suodattaminen pyydetyn sisällön tyypin mukaan.
- Tiedostonhallinta: Jotkin selaimet käyttävät MediaStore-kyselyitä kaiken multimedian nopeaan listaamiseen sen sijaan, että tuhansia kansioita ja tiedostoja tarvitsisi selata manuaalisesti.
Jopa vähemmän näkyvät tehtävät, kuten kameralla otetun kuvan ilmestyminen galleriaan tai pilveen muutamassa sekunnissa, koordinoidaan yleensä MediaProviderin kanssa, joka vastaa rekisteröi uusi kohde, poimi sen metatiedot ja ilmoita muutoksista kiinnostuneille hakemuksille.
MediaProviderin kehitys: Android 10:stä Android 11:een ja siitä eteenpäin

MediaProviderin kehityksen suuri harppaus alkoi, kun säilytystilaa ulottuvilla Android 10:ssä. Siitä hetkestä lähtien järjestelmä järjesti uudelleen mediatiedostojen tunnistamisen ja niiden näkymisen sovelluksille, mikä pakotti MediaProviderin tulemaan paljon älykkäämmäksi ja turvallisemmaksi.
Muutokset, jotka on otettu käyttöön Android 10:stä alkaen
Tuon version jälkeen Android on tehnyt useita tärkeitä parannuksia, jotka liittyvät mm. multimediatiedostojen tietojen tunnistaminen ja poimiminen:
- Järjestelmä määrittää, tiedoston sisältötyyppi käyttäen MIME-tyypin ensimmäistä osaaEsimerkiksi hän tietää, että
image/pngyimage/x-newly-invented-formatHe ovat molemmat kuvatyypitTämä mahdollistaa käyttäjän käyttöoikeuksien ja niihin liittyvien toimintojen paremman kuvaamisen. - Turvallisuuden parantamiseksi päättele MIME-tyyppi vain tiedostopäätteestä tiedostosta välttäen sisällöntunnistustekniikoita, jotka voisivat avata haavoittuvuuksia.
- MIMEn määritys perustuu a:han Debian Linuxista ja Androidin omista määritelmistä perittyjen taulukoiden yhdistelmäTämä johtaa paljon luotettavampaan ja johdonmukaisempaan epätavallisten formaattien havaitsemiseen.
- MediaProvider delegoi edistyneiden metatietojen hankinnan erikoistyökaluille:
MediaMetadataRetrievertiedostoillevideo/*yaudio/*JaExifInterfacetiedostoilleimage/*, jolloin saadaan kesto, bittinopeus, resoluutio, suunta, kameran tiedot ja muita hyödyllisiä tietoja.
Tämä muutosjoukko mahdollisti sovellusten vastaanottamisen luotettavampia ja standardoidumpia metatietojaSamalla vahvistettiin turvatoimia ja luotiin perusta nykyisille hienostuneille kulkuluville.
Android 11:stä alkaen käyttöön otetut parannukset
Android 11:n myötä MediaProvider rakensi näiden perustusten päälle ja otti askeleen eteenpäin sisällön organisointi, suorituskyky ja sovellusten ominaisuudet:
- Oli tehty merkittäviä parannuksia indeksoinnissa tiedostoista ja metatiedoista. Nyt moduuli täsmäyttää saatavilla olevat metatiedot MediaStore-APIen näyttämän sisällön kanssa, mikä yhdenmukaistaa paremmin sisäisesti tallennetun sisällön ja sovellusten kyselymahdollisuudet.
- Tietokantaan on lisätty uusia sarakkeita, mm.
is_favoriteja kuulemisen perusteluQUERY_ARG_MATCH_FAVORITETämä mahdollistaa galleriatyyppiset sovellukset Suodata nopeasti suosikeiksi merkitty sisältö käyttäjä. - MediaProvider aloitti indeksiväriavaruuden metatiedotolennaista HDR-sisällön käsittelyssä, todenmukaisempien kuvien luomisessa ja tarkemman esityksen saavuttamisessa edistyneillä näytöillä.
- Kolonni otettiin käyttöön
is_trashedja väiteQUERY_ARG_MATCH_TRASHEDerottaakseen selvästi tiedostot, jotka ovat roskakorijolloin galleriat voivat hallita roskakoria natiivisti. - He ilmestyivät Uudet API-rajapinnat joukkotoimintoihin useille elementeille yhdellä käyttäjän vahvistusikkunalla, mukaan lukien:
createDeleteRequest()useiden tiedostojen poistamiseen kerralla.createFavoriteRequest()merkitäksesi useita suosikkeja tai poistaaksesi merkintöjä yhdellä toiminnolla.createTrashRequest()lähettääksesi tiedostoeriä suoraan roskakoriin.createWriteRequest()pyytääksesi kirjoitusoikeuksia useisiin kohteisiin.
- Uusia sarakkeita on lisätty, mm.
GENERATION_ADDEDyGENERATION_MODIFIEDjotka sallivat sovellukset nopeasti havaita, mikä on muuttunut edellisen synkronoinnin jälkeen. ilman, että koko kirjastoa tarvitsee skannata uudelleen. - Yksi lisättiin Julkinen API
GROUP BYjonka avulla voit ryhmitellä tuloksia albumin, päivämäärän tai muiden metatietojen mukaan ilman monimutkaista jälkikäsittelyä sovelluksessa. - Sitä parannettiin
ExifInterfaceja Metatietojen poimiminen PNG- ja WebP-säilöistä, laajentaen edistyneellä tavalla käsiteltävien kuvaformaattien määrää. - SystemUI aloitti metadatan kirjoittamisen
DateTimeOriginalkuvakaappauksissa, jotta MediaProvider voi järjestää ja näyttää tällaisia kuvia paremmin gallerioiden sisällä.
Arkkitehtuurin osalta MediaProvider siirtyi muotoon APK APEXissaTämä tarkoittaa, että Java-koodi on pakattu APK:ksi järjestelmätason APEX-konttiin. Etuna on, että moduuli voi ladata hyvin aikaisin alussa, jopa ennen monia viitekehyksen osia, ja samaan aikaan hyödy nopeista päivityksistä Google Playn kautta.
MediaProvider- ja Mainline-moduulit: Erillispäivitykset Androidilla

Yksi Googlen tärkeimmistä strategioista pirstoutumisen torjumiseksi ja turvallisempien laitteiden tarjoamiseksi on luoda Päälinjan moduulitNämä ovat järjestelmäkomponentteja, jotka voidaan päivittää itsenäisesti Google Playsta ilman valmistajan suoraa puuttumista asiaan tai täydellisen OTA-päivityksen asentamista.
Näihin moduuleihin kuuluvat MediaProviderin lisäksi muut, kuten ART (sovelluksen suoritusympäristö), Conscrypt (kryptografinen kirjasto), Media, Mediakoodekit, Wi-Fi, Kiinniottamiseksi ja paljon muuta. Yhdessä ne mahdollistavat Androidin Korjaa kriittisiä virheitä, paranna suorituskykyä ja lisää ominaisuuksia olematta täysin riippuvainen kunkin valmistajan aikataulusta.
On tärkeää selventää, että vaikka modulaarinen arkkitehtuuri otettiin käyttöön Android 10:n myötä, Erityisesti MediaProvider nautti Mainline-päivitysominaisuudesta Android 11:stä alkaen.Tämän ansiosta, jos indeksoinnin aikana havaitaan tietoturva-aukko, yhteensopimattomuus uusien multimediaformaattien kanssa tai suorituskykyongelma, Google voi korjata sen ja julkaista päivityksen aivan kuten mikä tahansa muu Google Playn sovellus. Tällä tavoin puhelimesi pysyy paremmin yhteydessä. turvallinen ja johdonmukainen muun ekosysteemin kanssa, vaikka valmistajasi ei olisikaan erityisen nopea julkaisemaan uusia Android-versioita.
Mitä muita Mainline-moduuleja on olemassa ja miten MediaProvider liittyy niihin?

MediaProvider on vain yksi monista Päälinjan moduulit tavoitteena on tehdä järjestelmästä modulaarisempi, turvallisempi ja helpommin päivitettävä. Joitakin tärkeimpiä, erityisesti multimedia- ja verkkokokemukseen liittyviä, ovat:
- Media: Se käsittelee multimediatiedostojen käsittelyä mobiililaitteella, mukaan lukien toisto, tallennus ja suoratoiston hallintapalvelut.
- Mediakoodekit: Se pitää ääni- ja videokoodekit ajan tasalla, mikä parantaa yhteensopivuutta ja turvallisuutta dekoodauksessa ja koodauksessa koskematta koko järjestelmään.
- TAIDE: Se hallitsee sovelluksen suoritusaikaista ympäristöä (kääntäminen, tavukoodin optimointi jne.). Tämän moduulin parannukset vaikuttavat suoraan sovelluksen suorituskyky.
- Conscrypt: Se päivittää järjestelmän kryptografisen osan, joka on elintärkeä suojattujen yhteyksien, sertifikaattien ja salauksen kannalta.
- Wi-Fi: Se sisältää Wi-Fi-yhteyslogiikan, joka mahdollistaa seuraavien soveltamisen: Parannuksia vakauteen, yhteensopivuuteen ja tietoturvaan ilman täyttä OTA:ta.
- Internetyhteyden jakaminen: Hallitse Wi-Fi-, USB-, Bluetooth- tai Ethernet-yhteyksien jakamista mobiililaitteesi kautta.
- Käyttöoikeuksien ohjain: Päivitä moduuli, joka hallinnoi käyttäjien käyttöoikeuksia ja yksityisyyttä.
MediaProvider on läheisesti sukua moduuleille Media y Mediakoodekitkoska jälkimmäiset vastaavat MediaProviderin indeksoiman sisällön dekoodaamisesta ja käsittelystä. Kun uusia formaatteja saapuu tai olemassa olevia koodekkeja muutetaan, MediaProvider voi alkaa tunnistaa ja luetteloida nuo formaatit modernimpia (esimerkiksi uusia HEVC-, HDR- tai äänikoodekkien variantteja) ilman, että koko Androidia tarvitsee päivittää, edellyttäen, että myös muut mediamoduulit on päivitetty.
Voit selvittää, mitä Mainline-moduuleja mobiililaitteesi tukee, käyttämällä työkaluja, kuten ilmainen Mainline Updater -sovellusjoka näyttää, mitkä moduulit ovat läsnä, ja vie painikkeella osioon, jossa on Google Play -järjestelmäpäivityksetSieltä näet, onko vireillä olevia korjauksia, jotka vaikuttavat muun muassa MediaProvideriin.
MediaProvider, yksityisyys ja tallennusturvallisuus

Yksi merkittäviä viimeaikaisia edistysaskeleita MediaProvideriin liittyy seuraavien suojaaminen: käyttäjän yksityisyysAiemmin monet sovellukset pystyivät käyttämään kokonaisia kansioita ulkoisella tallennustilalla ja lukemaan erittäin yksityiskohtaisia metatietoja – mukaan lukien valokuviin upotettu GPS-sijainti – ilman järjestelmän hienosäätöä.
Yhdistelmän kanssa laajuinen tallennustila + MediaProvider + MediaStoreAsiat ovat muuttuneet:
- Sovelluksissa on rajoitettu pääsy valokuviin, videoihin ja ääneen. Esimerkiksi kuvankäsittelysovellus voi käyttää käyttäjän valitsemaa tiettyä kuvaa valokuvavalitsinmutta ei muuta galleriaasi.
- MediaProvider voi arkaluonteisten metatietojen poistaminen tai rajoittaminen, kuten kuvauspaikan tarkka sijainti tai kameran sisäiset tiedot, jos sovellus ei tarvitse näitä tietoja.
- Lupia tulee lisää rakeinen ja läpinäkyväKyse ei ole enää tallennustilan täyden käyttöoikeuden sallimisesta tai estämisestä, vaan käyttöoikeuden myöntämisestä tietyntyyppistä sisältöä (kuvia, videoita, ääntä) tai jopa käyttäjän valitsemia tiedostoja.
- Suojausta haitallisia sovelluksia vastaan, jotka yrittävät skannata tallennustilaa yksityisten asiakirjojen tai arkaluonteisen sisällön varalta, on vahvistettu. MediaProvider toimii suodatin ja tuomari siitä, mitä voi nähdä tai muokata.
Kaikki tämä yhdistetään edistyneiden kokemusten mahdollisuuksiin, kuten Uusimmat kuvanvalitsimet ja pilvimedian tarjoajat, josta MediaProvider on myös osa tietovirtaa.
API-rajapinnat ja käyttöesimerkit: Miten sovellukset ovat vuorovaikutuksessa MediaProviderin kanssa

Käyttäjäsovellukset eivät kommunikoi suoraan MediaProviderin kanssa, vaan pikemminkin MediaStoreJulkinen API toimii rajapintana. Tämä API tarjoaa täydellisen ekosysteemin intentit, vakiot ja kyselymetodit päästä käsiksi multimediatiedostoihin standardoidulla tavalla.
Sisällön kaappaus- ja valintayritykset
MediaStorea (ja laajemmin myös MediaProvideria) hyödyntäviä merkittävimpiä tapoja ovat:
MediaStore.ACTION_IMAGE_CAPTURE: Sen avulla voit käynnistää kameran kuvan ottamiseksi ja palauttaa sen soittosovellukseen.MediaStore.ACTION_IMAGE_CAPTURE_SECURE: Samanlainen kuin edellinen, mutta suunniteltu ympäristöihin, joissa laite on suojattu (PIN-koodi, kuvio, biometria) ja on ylläpidettävä turvallista kontekstia.MediaStore.ACTION_VIDEO_CAPTURE: Käynnistä kamera videotilassa ja palauta tulos kutsuvaan sovellukseen.MediaStore.ACTION_PICK_IMAGES: avaa valokuvavalitsin moderni Android, joka tarjoaa yhtenäisen kokemuksen kuvien ja videoiden valitsemiseen eri lähteistä (paikallinen tallennustila, pilvi jne.).MediaStore.ACTION_PICK_IMAGES_SETTINGS: Tämä johtaa valokuvavalitsimeen ja mediapalveluntarjoajiin liittyviin asetuksiin.MediaStore.ACTION_REVIEWyMediaStore.ACTION_REVIEW_SECURE: Niiden avulla voit tarkastella tai esikatsella juuri tallennettua multimediasisältöä hallitussa kontekstissa.
Näiden tarkoitusten lisäksi MediaStore määrittelee pitkän luettelon lisäominaisuudet ja vakiot joita MediaProvider kunnioittaa ja käyttää tiettyjen sääntöjen soveltamiseen. Joitakin esimerkkejä:
EXTRA_DURATION_LIMIT: videon tallennuksen aikana sallittu enimmäisaika.EXTRA_SIZE_LIMIT: suurin mahdollinen tulostustiedoston koko.EXTRA_OUTPUT: URI, johon tuloksena oleva kuva tai video tallennetaan.EXTRA_PICK_IMAGES_MAX: käyttäjän valittavissa olevien kohteiden enimmäismäärä valitsinistunnossa.
MediaStoreen tehtävät lisäkyselyt
Sovellukset, joiden on luettava mediakirjastoa, käyttävät MediaStore-tiedustelut erilaisilla argumenteilla ja suodattimilla. Joitakin MediaProviderin MediaStoren kautta tarjoamia toimintoja ovat:
- Suodatettu suosikkien ja roskakorin mukaan: argumenttien käyttäminen
QUERY_ARG_MATCH_FAVORITEyQUERY_ARG_MATCH_TRASHEDsovellukset voivat saada vain suosikeiksi merkityt kohteet tai ne, jotka ovat roskiksessa. - Muutosten asteittainen havaitseminen: sarakkeet, kuten
GENERATION_ADDEDyGENERATION_MODIFIEDNiiden avulla voit nopeasti nähdä, mitä elementtejä on lisätty tai muokattu edellisen synkronoinnin jälkeen, mikä on elintärkeää varmuuskopiointisovelluksille tai edistyneille gallerioille. - Käyttäjän ohjaamat joukkotoiminnot: menetelmiä, kuten
createDeleteRequest(),createTrashRequest(),createFavoriteRequest()ocreateWriteRequest()salli sovellukset ehdottaa erämuutoksiaMutta järjestelmä näyttää käyttäjälle vahvistusikkunan, jotta hänellä on lopullinen sananvalta. - EXIF-tiedostojen lukeminen ja kirjoittaminen: kautta
ExifInterfaceSovellukset voivat lukea tietoja esimerkiksi suunnasta, kuvausajasta, kameran mallista, sijainnista (jos saatavilla ja käyttäjä on sallinut sen) ja muista metatiedoista. Tämä on ratkaisevan tärkeää seuraaville kentille: kiertää valokuvia oikein, järjestää ne aikajärjestykseen tai näyttää kuvaustiedot.
MediaProvider, pilvitallennustila ja valokuvien valitsin

Saapuessa Moderni kuvanvalitsin ja pilvipohjaiset multimediasisällön tarjoajatMediaProviderin roolista on tullut entistäkin merkityksellisempi valokuvien ja videoiden valinnan työnkulussa.
Android sallii tiettyjen sovellusten, yleensä valmistajan nimeämien pilvikuvapalveluiden, toimia Pilvimedian tarjoajaNämä sovellukset tarjoavat pilveen tallennettu sisältö valokuvavalitsimeen, jotta käyttäjä voi valita paitsi paikallisia tiedostoja myös etäpalveluihin tallennettuja tiedostoja.
Tässä tilanteessa MediaProvider ja Photo Picker toimivat käsi kädessä:
- Järjestelmä alustaa ensisijaisen pilvipalveluntarjoajan ja synkronoi tiedot säännöllisesti. multimedian metatiedot kuvanvalitsimen taustajärjestelmän avulla.
- Kun sovellus käynnistää valokuvavalitsimen käyttämällä esimerkiksi seuraavia tavoitteita
ACTION_PICK_IMAGESoACTION_GET_CONTENT, valitsin yhdistää yhdeksi ruudukoksi MediaProviderin toimittamat paikalliset elementit ja CloudMediaProviderin toimittamat etäelementit. - Käyttäjän vierittäessä valitsin kehottaa optimoidut pikkukuvat toimittajille, jotta lastaus on nopeaa ja tehokasta.
- Valinnan valmistuttua, jos pilvisisältöä valitaan, järjestelmä luo Suojatut URI:t Ja MediaProvider koordinoi FUSEn ja muiden tasojen kautta pääsyä todelliseen dataan suojaten aina käyttöoikeudet ja yksityisyyden.
CloudMediaProvider puolestaan paljastaa menetelmiä, kuten onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()jota Valokuvavalitsin käyttää kohteiden, albumien ja poistetun sisällön listaamiseen sekä sekä esikatselujen että koko tiedoston avaamiseen. Vaikka nämä menetelmät on toteutettu MediaProviderin ulkopuolella, järjestelmän mediamoduuli integroituu niihin tarjotakseen johdonmukainen kokemus paikallisen ja pilvimedian käytöstä.
MediaProvider ja yhteensopiva videoiden transkoodaus

Toinen edistynyt toiminto, jossa MediaProviderilla on keskeinen rooli, on yhteensopiva multimediasisällön transkoodausTämän ominaisuuden ansiosta laitteet voivat käyttää moderneja ja tehokkaita videomuotoja – kuten HEVC:tä tai tiettyjä HDR-profiileja – rikkomatta yhteensopivuutta vanhempien sovellusten kanssa, jotka ymmärtävät vain klassisia muotoja, kuten AVC:tä (H.264).
Mekanismi toimii seuraavasti:
- Valmistajat ja käyttäjät voivat määrittää kameran tallentaa oletuksena HEVC-muodossa tai muita formaatteja, jotka ovat tehokkaampia tilan ja kaistanleveyden suhteen.
- Kun sovellus, joka ei tue HEVC:tä Kun yrität avata videon MediaStoren ja MediaProviderin kautta, järjestelmä saattaa siepata tiedoston lukeminen FUSEn (Filesystem in Userspace) käytön ansiosta.
- Jos havaitaan, että sovellus ei tue muotoa, MediaProvider ja Mediatranskoodauspalvelu, käynnistää taustalla tapahtuvan muunnoksen AVC- tai muussa yhteensopivassa muodossa olevan version luomiseksi.
- Sovellus vastaanottaa tiedoston kuvauksen, joka osoittaa jo transkoodattuun versioon (tai alkuperäiseen, jos sovellus tukee muotoa) tavalla, joka on kehittäjälle täysin läpinäkyvä.
Tätä transkoodausta säätelee kestorajoitukset ja resurssit Väärinkäytösten estämiseksi: esimerkiksi vain tietyn pituisia videoita käsitellään, ja peräkkäisten istuntojen määrä tai sovelluskohtainen kokonaiskäsittelyaika on rajoitettu. Jos nämä rajoitukset ylitetään, järjestelmä palauttaa alkuperäisen, käsittelemättömän tiedoston.
Tämän saavuttamiseksi arkkitehtuuri sisältää useita komponentteja:
- MediaTranscodingManager: Järjestelmärajapinta (API), jonka avulla MediaProvider ja muut kehyksen osat voivat kommunikoida transkoodauspalvelun kanssa.
- MediaTranskoodauspalvelu: palvelu, joka hallitsee transkoodausjonoja, aktiivisia istuntoja ja koodekkiresurssien allokointia.
- MediaTranskooderi: natiivikirjasto, joka suorittaa muunnokset formaattien välillä luottaen MediaCodec ja mahdollisissa OEM-lisäosissa esimerkiksi HDR → SDR -muunnokseen.
MediaProvider on koko tämän työnkulun keskipisteessä: se on moduuli, joka estää tiedostojen lukuyrityksenSe päättää sovelluksen ominaisuuksien perusteella, onko transkoodaus tarpeen, ja toimittaa lopulta oikean kuvaajan joko alkuperäiselle tiedostolle tai transkoodatulle tiedostolle.
Mukauttaminen ja laajennukset: MediaProvider kehittäjille ja valmistajille
Yksi MediaProviderin tehokkaimmista – ja vähiten tunnetuista – ominaisuuksista on kyky personoi käyttäytymisesiTämä osa on erityisen kiinnostava räätälöityjen ROM-kehittäjien, laitevalmistajien ja muiden valmistajienMutta se auttaa myös ymmärtämään, miksi jotkin laitteet toimivat jonkin verran eri tavalla tiettyjen tallennusmuotojen tai -polkujen kanssa.
Mukautetut mediamuodot
Valmistajat voivat lisätä tuen omistetut tai epätavalliset mediaformaatitJokaisen uuden tyypin osalta heidän on:
- Rekisteröidä a ainutlaatuinen tiedostopääte ja liitä se tiettyyn MIME-tyyppiin
MimeUtils. - Moduulin konfigurointi Medianpoiminta jotta se voi lukea metatietoja kyseisessä muodossa, jotta MediaProvider voi indeksoida ne oikein.
- Tapauksessa
video/*yaudio/*, luottaa edelleenMediaMetadataRetrieverpaljastaa asiaankuuluvat metatiedot. - Tapauksessa
image/*pidentää tai käyttääandroid.media.ExifInterfaceottaa talteen ja palauttaa normalisoitu EXIF-metatiedot jopa mukautetuissa kuvamuodoissa.
On tärkeää huomata, että se ei ole sallittua määritä uudelleen AOSP:ssä jo määritellyt tiedostopäätteet tai MIME-tyypitvälttääkseen laitteiden välisiä epäjohdonmukaisuuksia tai ristiriitoja.
Indeksoitavien tallennuslaitteiden valinta
MediaProvider indeksoi oletusarvoisesti kaikki palauttamat taltiot StorageManager.getStorageVolumes() Donde StorageVolume.getMediaStoreVolumeName() Se ei ole tyhjä. Laitevalmistajat voivat kuitenkin tarkenna indeksoitavat volyymit brändin vakiinnuttaminen VolumeInfo.MOUNT_FLAG_INDEXABLE niillä laitteilla, jotka haluavat niiden näkyvän mediakirjastossa.
Se on suositeltavaa Vältä ohimenevien levyjen merkitsemistä indeksoitaviksi —kuten tietyt USB OTG -asemat, jotka kytketään ja irrotetaan usein — jotta vältetään epäjohdonmukaisuuksien syntyminen tietokantaan tai virheiden syntyminen, kun taltio äkillisesti katoaa.
MTP-pinon korvaaminen ja mukauttaminen
MTP:n (Media Transfer Protocol) logiikka, jota käytetään Tiedostojen siirtäminen matkapuhelimen ja tietokoneen välillä USB:n kauttaSe on vähitellen erotettu MediaProvider-moduulin rajasta. Tietyistä versioista alkaen MTP-pino sijaitsee kokonaan moduulin ulkopuolella ja sen toiminta taataan vain Julkiset ja järjestelmärajapinnat.
Tämä antaa valmistajille, jotka tarvitsevat erityisiä siirtoratkaisuja, mahdollisuuden korvata tai mukauttaa MTP-pinoaan, kunhan ne säilyttävät yhteensopivuuden MediaStoren ja MediaProviderin sopimuksetjotta tiedostojen kopiointi ja lukeminen tietokoneelta pysyy yhdenmukaisena.
Oletuskansiot ja poissulkemisluettelo
Kun tallennustila aktivoidaan ensimmäisen kerran, MediaProvider luo tyypillisesti sarjan vakiokansiot kuten Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (Tämä viimeinen ei ole saatavilla joissakin vanhemmissa versioissa).
Laitteille, joilla on erityisiä organisaatiovaatimuksia, laitevalmistajat voivat tarjota pois jätettävien kansioiden luettelo alkuperäisen luonnin aikana resurssien päällekkäisyyden kautta config_foldersToSkipInDefaultCreationNäin ollen ne voisivat esimerkiksi estää kansioiden luomisen oletusarvoisesti. Notifications/ o Ringtones/ jos heillä on jo vaihtoehtoinen järjestelmä.
MediaProvider-riippuvuudet ja tekniset vaatimukset

MediaProvideria mukauttaessaan laitevalmistajien tulisi ottaa huomioon useita asioita tekniset riippuvuudet varmistaaksesi, että kaikki toimii edelleen oikein:
- Kun käytät epästandardit multimediatiedostomuodotJokainen muoto on rekisteröitävä molempiin
MimeUtilskuten moduulissa MedianpoimintaMuuten MediaProvider ei pysty indeksoimaan niitä tai tarjoamaan täydellisiä metatietoja. - Jotta mukautettu joukko tallennuslaitteita (SD-korttipaikat, sisäänrakennetut USB-portit jne.) indeksoidaan, on toteutettava
StorageManagerServiceHalutut tilavuudet on merkittäväVolumeInfo.MOUNT_FLAG_INDEXABLE. - Jos käytetään mukautettua MTP-pinoa, sen on perustuttava yksinomaan Julkiset ja järjestelmärajapinnat pysyäkseen MediaStoren kanssa yhteensopivana eikä keskeyttääkseen tietokoneen ja laitteen mediakirjaston välistä vuorovaikutusta.
Lisäksi videoiden transkoodauksen yhteydessä laitteiden on täytettävä tietyt vaatimukset. laitteiston vähimmäisvaatimuksetHEVC-koodauksen tuki käytössä kamerassa, riittävä luku- ja kirjoitusteho tallennustilassa ja koodekit, jotka pystyvät saavuttamaan korkeat käsittelynopeudet muunnostehtävissä.
MediaProvider-testaus, vianmääritys ja yleiset virheet

Normaalikäytössä MediaProvider jää yleensä huomaamatta. Kuten minkä tahansa järjestelmän osan kohdalla, siinä voi kuitenkin esiintyä ongelmia: odottamattomat sulkemiset, virheitä tiettyjen tiedostojen lukemisessa, epäonnistumisia metatietojen tai lohkojen päivittämisessä vioittuneiden levyjen skannauksessa.
Android-ekosysteemissä on useita automaattiset testit sen oikean toiminnan varmistamiseksi:
- CtsProviderTestCases: testisarja Yhteensopivuustesti Suite joka validoi MediaStoren julkisten API-rajapintojen toiminnan MediaProvideria vasten.
- MediaProvider-testit: sisäiset testit keskittyivät moduulin ja sen komponenttien erityiseen toimintaan.
Kehittäjät tai teknikot voivat suorittaa näitä testipaketteja komennoilla, kuten:
atest --test-mapping packages/providers/MediaProvider
Teknisillä foorumeilla jotkut käyttäjät ovat raportoineet Toistuvat MediaProvider-kaatumiset muistivirheiden vuoksi (OutOfMemoryError), erityisesti erittäin suuria videokokoelmia skannattaessa tai vaurioituneita SD-kortin osioita käsiteltäessä. Näissä tapauksissa on suositeltavaa:
- Tarkista sisäisen ja ulkoisen muistin fyysinen tila (alusta tai vaihda kortti, jos siinä on virheitä).
- Järjestelmän ylläpito ja päivitetyt Mainline-moduulit Google Playsta saadaksesi korjauksia.
- Tarkista, tuottaako jokin sovellus vioittuneet tiedostot tai tiedostot, joissa on poikkeavia metatietoja jotka aiheuttavat indeksointivirheitä.
MediaProvideriin liittyvät työkalut ja apuohjelmat

Jos haluat lisätietoja MediaProviderin päivityksistä tai asentamistasi Mainline-moduuleista, voit käyttää seuraavia työkaluja:
- Päälinjan päivittäjä: yksinkertainen sovellus, joka listaa Laitteessasi olevat päälinjan moduulit Se tarjoaa myös oikopolkuja Google Playn järjestelmäpäivitysten paneeliin. Tämä on hyödyllinen tarkistettaessa, ovatko MediaProvider ja muut tärkeät komponentit ajan tasalla.
- Mediapalveluntarjoajan päällikkö: avoimen lähdekoodin Xposed-moduuli, joka mahdollistaa Valvo ja rajoita MediaStoren käyttöä sovellusten toimesta. Sen avulla kokeneet käyttäjät voivat tarkastella, mitkä sovellukset tekevät eniten pyyntöjä, mitä käyttöoikeuksia ne käyttävät ja jopa rajoittaa tiettyjä käyttöoikeuksia yksityisyyden parantamiseksi.
Tällaiset työkalut eivät ole välttämättömiä keskivertokäyttäjälle, mutta ne tarjoavat ylimääräisen hallinnan niille, jotka haluavat hallita järjestelmiään tehokkaasti. tarkempi multimediakäyttäytyminen ja yksityisyys Android-laitteellasi.
MediaProviderista on tullut Android-järjestelmän keskeinen osa: se järjestää tehokkaasti kaiken multimediasisällön, suojaa yksityisyyttä paremmin tallennuksen avulla, helpottaa nykyaikaisten formaattien transkoodausta ja päivittyy itsenäisesti Mainline-moduulien ansiosta. Tämän näkymättömän komponentin toiminnan ymmärtäminen selittää, miksi galleriasi, musiikkisovelluksesi ja pilvipalvelusi toimivat nykyään nopeammin, johdonmukaisemmin ja paljon turvallisemmin kuin järjestelmän aiemmissa sukupolvissa.


