MediaProvider operētājsistēmā Android: kas tas ir, kā tas darbojas un kāpēc tas ir tik svarīgs

  • MediaProvider ir Android modulis, kas indeksē un publicē fotoattēlus, videoklipus un audio failus lietotnēm, izmantojot MediaStore, tādējādi uzlabojot veiktspēju un organizāciju.
  • Tā ir daļa no Mainline moduļiem, tāpēc tā tiek atjaunināta no Google Play, lai pievienotu saderību ar jauniem formātiem un novērstu drošības trūkumus.
  • Stipriniet privātumu, piemērojot ierobežotu krātuvi, kontrolējot atļaujas un slēpjot sensitīvus metadatus, piemēram, fotoattēla atrašanās vietu.
  • Oriģinālo iekārtu ražotāji (OEM) un izstrādātāji var pielāgot atbalstītos formātus, indeksējamos apjomus un izmantot tādas papildu funkcijas kā saderīga video transkodēšana.

MediaProvider Android multivides krātuve

Pēdējos gados Android ir ievērojami attīstījusies failu pārvaldības un sistēmas drošības ziņā. Viens no vismazāk izskaidrotajiem, bet svarīgajiem pareizas glabāšanas un lietotāju privātuma nodrošināšanai elementiem ir labi zināmais MediaProvider modulis . Ja kādreiz esat domājuši, kas ir šis komponents, kāpēc tas dažreiz parādās sistēmas ziņojumos, kādus uzlabojumus tas ienes katrā Android versijā vai kā tas ietekmē jūsu tālruni, mēs to šeit detalizēti aplūkosim.

Pārlūkojot tālruņa iestatījumus, pārbaudot krātuves izmantošanu vai pārlūkojot tehniskos forumus, ir viegli sastapties ar nosaukumu MediaProvider, taču lielākā daļa cilvēku nav pilnīgi pārliecināti, ko tas dara vai kāpēc tas ir nepieciešams, lai tādas lietotnes kā fotogalerijas, mūzikas atskaņotāji un failu pārvaldnieki darbotos nevainojami . Aplūkosim to tuvāk, lai jūs pilnībā apzinātos tā lomu ikdienas Android pieredzē neatkarīgi no tā, vai vienkārši vēlaties labāk izprast savu tālruni vai izstrādāt pielāgotas lietotnes vai ROM.

Kas ir MediaProvider un kāda ir tā funkcija operētājsistēmā Android?

Kas ir Android MediaProvider modulis?

El MediaProvider modulis Tā ir viena no Android sistēmas iekšējām sastāvdaļām, kas atbild par pārvaldīt, indeksēt un nodrošināt piekļuvi multivides failiem piemēram, fotoattēlus, videoklipus un mūziku, kas saglabāti gan iekšējā atmiņā, gan ārējās ierīcēs (SD kartēs, USB diskdziņos utt.). Tā nav parasta lietotne, bet gan Sistēmas satura nodrošinātājs kas balstās uz publisko datubāzi MediaStore lai citas lietotnes varētu ātri un droši piekļūt multivides saturam.

Tās galvenā funkcija ir analizēt failus, iegūt to metadatus un indeksēt tos optimizētās tabulās. Šie metadati ietver tādus elementus kā faila tips, video vai audio ilgums, attēla izšķirtspēja, uzņemšanas datums, lielums, glabāšanas vieta un dažos gadījumos arī uzlaboti EXIF ​​dati fotogrāfijām.

Pateicoties šim modulim, lietotnes var parādīt visu jūsu bibliotēku, manuāli neskenējot visu mapju koku . Piemēram, fotogalerijai nav jāpārbauda katrs direktorijs: tā nosūta vaicājumu uz MediaStore un milisekundēs iegūst visu attēlu lappušu sarakstu, kas ir sakārtots un filtrēts pēc nepieciešamības. Tas ievērojami uzlabo veiktspēju un akumulatora darbības laiku, salīdzinot ar tiešu failu sistēmas skenēšanu.

MediaProvider integrējas arī ar tvēruma krātuves modeli . Praksē tas nozīmē, ka modulis ievieš drošības noteikumus , lai kontrolētu, kuras lietotnes var skatīt un modificēt konkrētus failus. Piemēram, tas slēpj vai rediģē sensitīvus metadatus , piemēram, precīzu fotoattēla uzņemšanas vietu, ja lietotnei šī informācija nav nepieciešama vai tai nav nepieciešamo atļauju.

Vēl viens svarīgs aspekts ir tas, ka MediaProvider ir daļa no tā sauktajiem Mainline moduļiem (jeb sistēmas atjaunināmajiem moduļiem), kas ļauj Google un ražotājiem to atjaunināt neatkarīgi, izmantojot Google Play . Tādā veidā tiek novērstas drošības ievainojamības, pievienota saderība ar jauniem failu formātiem un uzlabotas funkcijas, negaidot pilnu sistēmas atjauninājumu.

Kā MediaProvider ietekmē jūsu ikdienas dzīvi

MediaProvider ikdienas lietošanā

Lai gan jūs to nevarat redzēt, MediaProvider nepārtraukti darbojas fonā. Daži skaidri piemēri tam, kā tas ietekmē jūsu ikdienas pieredzi, ir šādi:

  • Īsa galerijas atklāšana: Atverot fotoattēlu lietotni, tā veic vaicājumu pakalpojumā MediaStore un, pateicoties moduļa iepriekšējai indeksēšanai, var gandrīz uzreiz parādīt jūsu attēlus.
  • Meklēšana pēc datuma, veida vai albuma: Daudzās galerijās var filtrēt pēc videoklipiem, selfijiem, ekrānuzņēmumiem vai konkrētiem datumiem. Visa šī informācija ir iegūta no metadatus pārvalda MediaProvider.
  • Mūzikas un podkāstu atskaņotāji: Saraksti pēc izpildītāja, albuma, žanra vai atskaņošanas sarakstiem ir balstīti uz datiem, ko MediaProvider ir apkopojis un normalizējis no audio failiem.
  • Ziņojumapmaiņas un sociālo mediju lietotnes: Kad kopīgojat fotoattēlu no WhatsApp, Telegram vai Instagram, izmantojot attēlu atlasītāju, tie faktiski ir lasot MediaStore katalogu un filtrēšana pēc pieprasītā satura veida.
  • Failu pārvaldnieki: Dažas pārlūkprogrammas izmanto MediaStore vaicājumus, lai ātri uzskaitītu visu multividi, nevis manuāli pārlūkotu tūkstošiem mapju un failu.

Pat mazāk redzami uzdevumi, piemēram, ar kameru uzņemta fotoattēla parādīšanās galerijā vai mākonī dažu sekunžu laikā, parasti tiek saskaņoti ar MediaProvider, kas ir atbildīgs par jaunā vienuma reģistrēšanu, tā metadatu iegūšanu un ieinteresēto lietojumprogrammu paziņošanu par izmaiņām.

MediaProvider evolūcija: no Android 10 līdz Android 11 un jaunākiem modeļiem

Multivides pakalpojumu sniedzēja atjauninājumi

Lielais lēciens MediaProvider attīstībā sākās ar ierobežotas krātuves ieviešanu operētājsistēmā Android 10. Kopš tā brīža sistēma reorganizēja multivides failu identificēšanas veidu un to, kā tie tiek pakļauti lietotnēm, piespiežot MediaProvider kļūt daudz viedākam un drošākam.

Izmaiņas, kas ieviestas, sākot ar Android 10

Kopš šīs versijas Android ir ieviesusi vairākus būtiskus uzlabojumus, kas saistīti ar datu identificēšanu un iegūšanu no multivides failiem :

  • Sistēma nosaka, faila satura tips, izmantojot MIME tipa pirmo daļuPiemēram, viņš zina, ka image/png y image/x-newly-invented-format Viņi abi ir attēlu veidiTas ļauj labāk aprakstīt lietotāja atļaujas un ar tām saistīto uzvedību.
  • Lai uzlabotu drošību, secināt MIME tipu tikai no paplašinājuma no faila, izvairoties no satura noteikšanas metodēm, kas varētu radīt ievainojamības.
  • MIME noteikšana ir balstīta uz no Debian Linux un Android pašu definīcijām mantotu tabulu kombinācijaTas nodrošina daudz uzticamāku un konsekventāku neparastu formātu noteikšanu.
  • MediaProvider deleģē uzlabotu metadatu iegūšanu specializētiem rīkiem: MediaMetadataRetriever failiem video/* y audio/*, Un ExifInterface failiem image/*, tādējādi iegūstot ilgums, bitu pārraides ātrums, izšķirtspēja, orientācija, kameras informācija un cita noderīga informācija.

Šīs izmaiņas ļāva lietotnēm saņemt uzticamākus un standartizētākus metadatus , vienlaikus stiprinot drošības pasākumus un liekot pamatu uzlabotajām piekļuves atļaujām, ko mēs pazīstam šodien.

Uzlabojumi, kas ieviesti, sākot ar Android 11

Ar Android 11 MediaProvider balstījās uz šiem pamatprincipiem un spēra nākamo soli satura organizēšanā, veiktspējā un lietotņu iespējās :

  • Tika izgatavoti ievērojami uzlabojumi indeksēšanā failu un metadatu. Tagad modulis saskaņo pieejamos metadatus ar to, ko parāda MediaStore API, labāk saskaņojot iekšēji saglabāto informāciju ar to, ko lietojumprogrammas var vaicāt.
  • Datubāzei tika pievienotas jaunas kolonnas, piemēram, is_favorite un arguments par labu apspriešanai QUERY_ARG_MATCH_FAVORITETas ļauj izmantot galerijas tipa lietojumprogrammas Ātri filtrējiet saturu, kas atzīmēts kā favorīts ko veic lietotājs.
  • MediaProvider sāka indeksa krāsu telpas metadatiir būtiski HDR satura apstrādei, reālistiskākiem fotoattēliem un precīzākam attēlojumam uzlabotos ekrānos.
  • Kolonna tika ieviesta is_trashed un arguments QUERY_ARG_MATCH_TRASHED lai skaidri atšķirtu failus, kas atrodas atkritniļaujot galerijām pārvaldīt šo atkritumu tvertni.
  • Viņi parādījās Jaunas API lielapjoma darbībām uz vairākiem elementiem ar vienu lietotāja apstiprinājuma dialoglodziņu, tostarp:
    • createDeleteRequest() lai vienlaikus izdzēstu vairākus failus.
    • createFavoriteRequest() lai ar vienu darbību atzīmētu vai noņemtu atzīmi no vairākiem favorītiem.
    • createTrashRequest() lai nosūtītu failu partijas tieši uz miskasti.
    • createWriteRequest() lai pieprasītu rakstīšanas atļaujas vairākiem vienumiem.
  • Tika pievienotas jaunas kolonnas, piemēram, GENERATION_ADDED y GENERATION_MODIFIED kas atļauj lietotnes ātri noteikt, kas ir mainījies kopš iepriekšējās sinhronizācijas. bez nepieciešamības atkārtoti skenēt visu bibliotēku.
  • Viens tika pievienots Publiskā API GROUP BY kas ļauj grupēt rezultātus pēc albuma, datuma vai citiem metadatiem, neveicot sarežģītu pēcapstrādi lietotnē.
  • Tas tika uzlabots ExifInterface par Metadatu izvilkšana no PNG un WebP konteineriem, paplašinot uzlabotā veidā apstrādāto attēlu formātu skaitu.
  • SystemUI sāka rakstīt metadatus DateTimeOriginal ekrānuzņēmumos, lai MediaProvider varētu lai labāk organizētu un attēlotu šāda veida attēlus galeriju iekšpusē.

Runājot par arhitektūru, MediaProvider tika migrēts uz APK-in-APEX formātu . Tas nozīmē, ka Java kods ir iepakots kā APK sistēmas līmeņa APEX konteinerā. Priekšrocība ir tā, ka moduli var ielādēt ļoti agri sāknēšanas procesā , pat pirms daudzām ietvara daļām, vienlaikus gūstot labumu no ātrajiem atjauninājumiem, izmantojot Google Play.

MediaProvider un Mainline moduļi: atsevišķi atjauninājumi operētājsistēmā Android

Galvenie moduļi operētājsistēmā Android

Viena no Google galvenajām stratēģijām, kā cīnīties pret fragmentāciju un piedāvāt drošākas ierīces, ir galveno moduļu izveide . Tie ir sistēmas komponenti, kurus var atjaunināt neatkarīgi no Google Play, bez tiešas ražotāja iejaukšanās vai nepieciešamības instalēt pilnu OTA atjauninājumu.

Šie moduļi ietver MediaProvider, kā arī citus, piemēram, ART (lietotnes izpildlaika vidi), Conscrypt (kriptogrāfisko bibliotēku), Media , Media Codecs , Wi-Fi , Tethering un daudzus citus. Kopā tie ļauj Android novērst kritiskas kļūdas, uzlabot veiktspēju un pievienot funkcijas, pilnībā nepaļaujoties uz katra ražotāja izlaišanas grafiku.

Ir svarīgi precizēt, ka, lai gan modulārā arhitektūra tika ieviesta ar Android 10, MediaProvider jo īpaši guva labumu no Mainline atjauninājumiem, sākot ar Android 11. Pateicoties tam, ja tiek konstatēta drošības ievainojamība, nesaderība ar jauniem multivides formātiem vai indeksēšanas veiktspējas problēma, Google var to labot un izlaist atjauninājumu tāpat kā jebkuru citu lietotni pakalpojumā Google Play. Tādā veidā jūsu tālrunis saglabājas drošāks un atbilstošāks pārējai ekosistēmai, pat ja ražotājs īpaši nesteidzas izlaist jaunas Android versijas.

Kādi citi Mainline moduļi pastāv un kā MediaProvider ir ar tiem saistīts?

Ar MediaProvider saistītie galvenie moduļi

MediaProvider ir tikai viens no daudzajiem Mainline moduļiem, kas izstrādāti, lai padarītu sistēmu modulārāku, drošāku un vieglāk jaunināmu. Daži no svarīgākajiem, īpaši tie, kas saistīti ar multivides un tīkla pieredzi, ir:

  • Mediji: Tā apstrādā multivides failus mobilajā ierīcē, tostarp atskaņošanu, uztveršanu un straumēšanas pārvaldības pakalpojumus.
  • Multivides kodeki: Tas uztur audio un video kodekus atjauninātus, nodrošinot uzlabotu saderību un drošību dekodēšanas un kodēšanas laikā, neietekmējot visu sistēmu.
  • MĀKSLA: Tas pārvalda lietotnes izpildlaika vidi (kompilāciju, baitkoda optimizāciju utt.). Šī moduļa uzlabojumi tieši ietekmē lietojumprogrammas veiktspēja.
  • Konskripts: Tas atjaunina sistēmas kriptogrāfisko daļu, kas ir vitāli svarīga drošiem savienojumiem, sertifikātiem un šifrēšanai.
  • Wi-Fi: Tas satur Wi-Fi savienojamības loģiku, kas ļauj pielietot Stabilitātes, saderības un drošības uzlabojumi bez pilna OTA.
  • Piesiešana: Kontrolējiet Wi-Fi, USB, Bluetooth vai Ethernet savienojumu koplietošanu, izmantojot savu mobilo ierīci.
  • Atļauju kontrolieris: Atjauniniet moduli, kas pārvalda lietotāju atļaujas un privātuma saskarnes elementus.

MediaProvider cieši sadarbojas ar multivides un multivides kodeku moduļiem , jo ​​pēdējie moduļi ir atbildīgi par MediaProvider indeksētā satura dekodēšanu un apstrādi. Kad tiek izlaisti jauni formāti vai atjaunināti esošie kodeki, MediaProvider var sākt atpazīt un katalogizēt šos jaunākos formātus (piemēram, jaunus HEVC variantus, HDR vai audio kodekus), neprasot pilnīgu Android atjauninājumu, ja vien ir atjaunināti arī pārējie multivides moduļi.

Lai uzzinātu, kurus Mainline moduļus atbalsta jūsu tālrunis, varat izmantot tādus rīkus kā bezmaksas lietotne Mainline Updater , kas parāda, kuri moduļi ir pieejami, un ar vienu pogu jūs novirza uz Google Play sadaļu Sistēmas atjauninājumi . Tur jūs redzēsiet, vai ir kādi gaidāmie ielāpi, kas ietekmē, cita starpā, MediaProvider.

MediaProvider, privātums un krātuves drošība

Privātuma un multivides pakalpojumu sniedzējs

Viens no lielākajiem jaunākajiem sasniegumiem saistībā ar MediaProvider ir lietotāju privātuma aizsardzība . Iepriekš daudzas lietotnes varēja piekļūt veselām mapēm ārējā atmiņā un lasīt ļoti detalizētus metadatus, tostarp fotoattēlos iegulto GPS atrašanās vietu, bez sistēmas veiktas precīzas regulēšanas.

Apvienojot aptverto krātuvi + MediaProvider + MediaStore , lietas ir mainījušās:

  • Lietotnēm ir ierobežota piekļuve uz fotoattēliem, videoklipiem un audio. Piemēram, fotoattēlu rediģēšanas lietotne var piekļūt konkrētam attēlam, ko lietotājs ir atlasījis, izmantojot fotoattēlu atlasītājsbet ne pārējo tavu galeriju.
  • Multivides nodrošinātājs var rediģēt vai ierobežot sensitīvus metadatus, piemēram, precīzu uzņemšanas vietu vai iekšējās kameras informāciju, ja lietotnei šie dati nav nepieciešami.
  • Atļaujas kļūst arvien vairāk granulēts un caurspīdīgsVairs nav runa par pilnīgas piekļuves krātuvei atļaušanu vai liegšanu, bet gan par piekļuves piešķiršanu konkrēti satura veidi (attēli, video, audio) vai pat lietotāja atlasīti faili.
  • Ir pastiprināta aizsardzība pret ļaunprātīgām lietotnēm, kas mēģina skenēt krātuvi, meklējot privātus dokumentus vai sensitīvu saturu. MediaProvider darbojas kā filtrs un tiesnesis par to, ko var redzēt vai mainīt.

Tas viss ir apvienots ar uzlabotām iespējām, piemēram, jaunāko fotoattēlu atlasītāju un mākonī balstītiem multivides satura nodrošinātājiem , kuru datu plūsmas daļa ir arī MediaProvider.

API un lietošanas piemēri: Kā lietotnes mijiedarbojas ar MediaProvider

Lietotnes, kas izmanto MediaProvider

Lietotāju lietojumprogrammas nesazinās tieši ar MediaProvider, bet gan caur MediaStore — publisku API, kas darbojas kā saskarne. Šis API piedāvā pilnīgu nolūku, konstantu un vaicājumu metožu ekosistēmu multivides failu piekļuvei standartizētā veidā.

Satura tveršanas un atlases mēģinājumi

Starp ievērojamākajiem nolūkiem, kas izmanto MediaStore (un, plašākā nozīmē, MediaProvider) priekšrocības, ir:

  • MediaStore.ACTION_IMAGE_CAPTURE: Tas ļauj palaist kameru, lai uzņemtu attēlu un atgrieztu to zvanīšanas lietotnē.
  • MediaStore.ACTION_IMAGE_CAPTURE_SECURE: Līdzīgi kā iepriekšējais, bet paredzēts vidēm, kurās ierīce ir aizsargāta (PIN, atslēgas paraugs, biometrija) un ir jāuztur drošs konteksts.
  • MediaStore.ACTION_VIDEO_CAPTURE: Ieslēdziet kameru video režīmā un atgrieziet rezultātu izsaucošajai lietotnei.
  • MediaStore.ACTION_PICK_IMAGES: atveriet fotoattēlu atlasītājs mūsdienīga Android operētājsistēma, kas piedāvā vienotu pieredzi attēlu un videoklipu izvēlei no dažādiem avotiem (lokālā krātuve, mākonis utt.).
  • MediaStore.ACTION_PICK_IMAGES_SETTINGS: Tas noved pie iestatījumiem, kas saistīti ar fotoattēlu atlasītāju un multivides pakalpojumu sniedzējiem.
  • MediaStore.ACTION_REVIEW y MediaStore.ACTION_REVIEW_SECURE: Tie ļauj kontrolētā kontekstā pārskatīt vai priekšskatīt jaunizveidotu multivides saturu.

Papildus šiem nolūkiem MediaStore definē garu ekstras un konstantu sarakstu , ko MediaProvider respektē un izmanto, lai piemērotu konkrētus noteikumus. Daži piemēri:

  • EXTRA_DURATION_LIMIT: maksimālais atļautais ierakstīšanas laiks videoieraksta laikā.
  • EXTRA_SIZE_LIMIT: maksimālais izvades faila lielums.
  • EXTRA_OUTPUT: URI, kur tiks saglabāts iegūtais attēls vai video.
  • EXTRA_PICK_IMAGES_MAX: maksimālais vienumu skaits, ko lietotājs var atlasīt atlasītāja sesijā.

Paplašināti vaicājumi vietnei MediaStore

Lietotnes, kurām ir jālasa multivides bibliotēka, izmanto vaicājumus MediaStore ar dažādiem argumentiem un filtriem. Dažas no MediaProvider piedāvātajām funkcijām, izmantojot MediaStore, ir šādas:

  • Filtrēts pēc favorītiem un miskastes: izmantojot argumentus QUERY_ARG_MATCH_FAVORITE y QUERY_ARG_MATCH_TRASHED, lietotnes var iegūt tikai vienumi, kas atzīmēti kā favorīti vai tiem, kas atrodas miskastē.
  • Pakāpeniska izmaiņu noteikšana: kolonnas, piemēram, GENERATION_ADDED y GENERATION_MODIFIED Tie ļauj ātri redzēt, kādi elementi ir pievienoti vai modificēti kopš iepriekšējās sinhronizācijas, kas ir ļoti svarīgi dublēšanas lietotnēm vai uzlabotām galerijām.
  • Lietotāja kontrolētas masveida darbības: tādas metodes kā createDeleteRequest(), createTrashRequest(), createFavoriteRequest() o createWriteRequest() atļaut lietotnes ierosināt partijas izmaiņasTaču tieši sistēma lietotājam parāda apstiprinājuma dialoglodziņu, lai viņam būtu pēdējais vārds.
  • EXIF lasīšana un rakstīšana: caur ExifInterfaceLietotnes var nolasīt tādus laukus kā orientācija, uzņemšanas laiks, kameras modelis, atrašanās vieta (ja pieejama un lietotājs to atļauj) un citi metadati. Tas ir ļoti svarīgi, lai pareizi pagriezt fotoattēlus, sakārtot tos hronoloģiskā secībā vai parādīt uzņemšanas datus.

Multivides nodrošinātājs, mākoņkrātuve un fotoattēlu atlasītājs

Multivides pakalpojumu sniedzējs un mākoņkrātuve

Līdz ar modernā fotoattēlu atlasītāja un mākonī balstītu multivides pakalpojumu sniedzēju parādīšanos MediaProvider loma ir kļuvusi vēl nozīmīgāka fotoattēlu un videoklipu atlases darbplūsmā.

Android ļauj noteiktām lietotnēm, parasti ražotāju norādītiem mākoņfotoattēlu pakalpojumiem, darboties kā CloudMediaProviders . Šīs lietotnes piegādā mākonī saglabāto saturu fotoattēlu atlasītājam, lai lietotājs varētu izvēlēties ne tikai lokālos failus, bet arī tos, kas saglabāti attālos pakalpojumos.

Šajā scenārijā MediaProvider un Photo Picker darbojas roku rokā:

  1. Sistēma inicializē vēlamo mākoņpakalpojumu sniedzēju un periodiski sinhronizējas multivides metadati ar fotoattēlu atlasītāja aizmugursistēmu.
  2. Kad lietotne palaiž fotoattēlu atlasītāju, izmantojot tādus nolūkus kā ACTION_PICK_IMAGES o ACTION_GET_CONTENT, atlasītājs apvienot vienā režģī MediaProvider nodrošinātie lokālie elementi un CloudMediaProvider nodrošinātie attālie elementi.
  3. Lietotājam ritinot, atlasītājs uzvednē parādās jautājums optimizēti sīktēli piegādātājiem, lai iekraušana būtu ātra un efektīva.
  4. Pēc atlases pabeigšanas, ja ir izvēlēts mākoņa saturs, sistēma ģenerē Droši URI Un MediaProvider, izmantojot FUSE un citus slāņus, koordinē piekļuvi reāliem datiem, vienmēr aizsargājot atļaujas un privātumu.

Savukārt CloudMediaProvider atklāj tādas metodes kā onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()ko Fotoattēlu atlasītājs izmanto, lai uzskaitītu vienumus, albumus, dzēsto saturu un atvērtu gan priekšskatījumus, gan visu failu. Lai gan šīs metodes ir ieviestas ārpus MediaProvider, sistēmas multivides modulis integrējas ar tām, lai piedāvātu vienota piekļuve vietējiem un mākoņa multivides failiem.

MediaProvider un saderīga video transkodēšana

Video pārkodēšana un multivides nodrošinātājs

Vēl viena uzlabota funkcija, kurā MediaProvider ir būtiska loma, ir saderīga multivides satura transkodēšana . Šī funkcija ļauj ierīcēm izmantot modernus, efektīvus video formātus, piemēram, HEVC vai noteiktus HDR profilus, nepārtraucot saderību ar vecākām lietotnēm, kas saprot tikai klasiskos formātus, piemēram, AVC (H.264).

Mehānisms darbojas šādi:

  • Ražotāji un lietotāji var konfigurēt kameru, lai ierakstīt HEVC kvalitātē pēc noklusējuma vai citus formātus, kas ir efektīvāki vietas un joslas platuma ziņā.
  • Kad lietotne, kas neatbalsta HEVC Mēģinot atvērt video, izmantojot MediaStore un MediaProvider, sistēma var pārtvert faila lasīšanu pateicoties FUSE (failu sistēma lietotāja telpā) izmantošanai.
  • Ja tiek konstatēts, ka lietotne neatbalsta formātu, MediaProvider kopā ar Multivides pārkodēšanas pakalpojums, uzsāk fona konvertēšanu, lai ģenerētu versiju AVC vai citā saderīgā formātā.
  • Lietotne saņem faila deskriptoru, kas norāda uz jau transkodēto versiju (vai oriģinālu, ja lietotne atbalsta šo formātu) izstrādātājam pilnīgi caurspīdīgā veidā.

Šim transkodēšanas procesam ir noteikti laika un resursu ierobežojumi , lai novērstu ļaunprātīgu izmantošanu: piemēram, tiek apstrādāti tikai video līdz noteiktam garumam, un secīgu sesiju skaits vai kopējais apstrādes laiks katrai lietotnei ir ierobežots. Ja šie ierobežojumi tiek pārsniegti, sistēma atgriež sākotnējo, neapstrādāto failu.

Lai to panāktu, arhitektūra ietver vairākus komponentus:

  • Multivides pārkodēšanas pārvaldnieks: Sistēmas API, kas ļauj MediaProvider un citām ietvara daļām sazināties ar transkodēšanas pakalpojumu.
  • Multivides pārkodēšanas pakalpojums: pakalpojums, kas pārvalda transkodēšanas rindas, aktīvās sesijas un kodeku resursu piešķiršanu.
  • Multivides pārkodētājs: vietējā bibliotēka, kas veic konvertēšanu starp formātiem, paļaujoties uz MediaCodec un iespējamos OEM papildinājumos tādām darbībām kā HDR → SDR konvertēšana.

MediaProvider ir visas šīs plūsmas centrā: tas ir modulis, kas pārtver mēģinājumu nolasīt failus , izlemj, vai ir nepieciešama transkodēšana atbilstoši lietotnes iespējām, un visbeidzot piegādā pareizo deskriptoru vai nu sākotnējam failam, vai transkodētajam failam.

Pielāgošana un paplašināšana: MediaProvider izstrādātājiem un ražotājiem

Izstrādātāji un multivides nodrošinātāji

Viena no MediaProvider jaudīgākajām un vismazāk zināmajām funkcijām ir iespēja pielāgot tā darbību . Tas īpaši interesē pielāgotu ROM izstrādātājus, oriģinālā aprīkojuma ražotājus (OEM) un ražotājus , taču tas arī palīdz saprast, kāpēc dažas ierīces darbojas nedaudz atšķirīgi ar noteiktiem krātuves formātiem vai ceļiem.

Pielāgoti multivides formāti

Ražotāji var pievienot atbalstu patentētiem vai neparastiem multivides formātiem . Katram jaunam veidam viņiem ir:

  • Reģistrējiet vienu unikāls faila paplašinājums un saistīt to ar konkrētu MIME tipu, MimeUtils.
  • Konfigurēt moduli Multivides ieguvējs lai tas varētu nolasīt metadatus šajā formātā, lai MediaProvider varētu tos pareizi indeksēt.
  • Šajā gadījumā video/* y audio/*, turpiniet paļauties uz MediaMetadataRetriever lai atklātu attiecīgos metadatus.
  • Šajā gadījumā image/*pagarināt vai izmantot android.media.ExifInterface izvilkt un atgriezt normalizēti EXIF ​​​​metadati pat pielāgotos attēlu formātos.

Ir svarīgi atzīmēt, ka AOSP jau definēto paplašinājumu vai MIME tipu pārdefinēšana nav atļauta , lai izvairītos no neatbilstībām vai konfliktiem starp ierīcēm.

Indeksējamo atmiņas ierīču izvēle

MediaProvider pēc noklusējuma indeksē visus sējumus, ko atgriež StorageManager.getStorageVolumes() kur StorageVolume.getMediaStoreVolumeName() Tas nav nulle. Tomēr oriģinālā aprīkojuma ražotāji (OEM) var precizēt, kuri apjomi tiek indeksēti zīmola izveide VolumeInfo.MOUNT_FLAG_INDEXABLE tajās ierīcēs, kuras vēlas, lai tās tiktu rādītas multivides bibliotēkā.

Ieteicams izvairīties no pārejošu sējumu atzīmēšanas kā indeksējamu , piemēram, noteiktu USB OTG disku, kas tiek bieži pievienoti un atvienoti, lai novērstu neatbilstības datubāzē vai kļūdas, ko izraisa sējuma pēkšņa pazušana.

MTP steka nomaiņa un pielāgošana

MTP (Media Transfer Protocol) loģika, ko izmanto failu pārsūtīšanai starp mobilo ierīci un datoru, izmantojot USB , ir atdalīta no MediaProvider moduļa. Sākot ar noteiktām versijām, MTP steks atrodas pilnībā ārpus moduļa un garantēti darbosies, izmantojot tikai publiskās un sistēmas API.

Tas ļauj ražotājiem, kuriem nepieciešami īpaši pārsūtīšanas risinājumi, aizstāt vai pielāgot savu MTP steku, ja vien tie saglabā saderību ar MediaStore un MediaProvider līgumiem , lai failu kopēšanas un lasīšanas pieredze no datora saglabātu nemainīgu kvalitāti.

Noklusējuma mapes un izslēgšanas saraksts

Kad krātuves sējums tiek pirmo reizi aktivizēts, MediaProvider parasti izveido virkni standarta mapes kā Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (Pēdējais nav pieejams dažās vecākās versijās).

Ierīcēm, kurām ir īpašas organizatoriskas prasības, oriģinālā aprīkojuma ražotāji (OEM) var nodrošināt mapju saraksts, kuras izlaist sākotnējās izveides laikā, izmantojot resursu pārklājumu config_foldersToSkipInDefaultCreationTādējādi, piemēram, tie varētu novērst mapju izveidi pēc noklusējuma. Notifications/ o Ringtones/ ja viņiem jau ir alternatīva sistēma.

MediaProvider atkarības un tehniskās prasības

MediaProvider tehniskās prasības

Pielāgojot MediaProvider, oriģinālā aprīkojuma ražotājiem (OEM) ir jāņem vērā vairākas tehniskas atkarības , lai nodrošinātu, ka viss turpina darboties pareizi:

  • Lietojot nestandarta multimediju failu formātiKatrs formāts ir jāreģistrē abos MimeUtils kā modulī Multivides ieguvējsPretējā gadījumā MediaProvider nevarēs tos indeksēt vai sniegt pilnīgus metadatus.
  • Lai nodrošinātu, ka tiek indeksēts pielāgots atmiņas ierīču kopums (SD sloti, iebūvētie USB porti utt.), ir jāievieš StorageManagerService Vēlamie apjomi jāatzīmē ar VolumeInfo.MOUNT_FLAG_INDEXABLE.
  • Ja tiek izmantots pielāgots MTP steks, tam jābalstās tikai uz Publiskās un sistēmas API lai saglabātu saderību ar MediaStore un nepārtrauktu mijiedarbību starp datoru un ierīces multivides bibliotēku.

Turklāt video transkodēšanas kontekstā ierīcēm ir jāatbilst noteiktām minimālajām aparatūras prasībām : iebūvētajā kamerā ir iespējots HEVC kodēšanas atbalsts, pietiekama lasīšanas un rakstīšanas veiktspēja krātuvē un kodeki, kas spēj sasniegt augstu apstrādes ātrumu konvertēšanas uzdevumos.

MediaProvider testēšana, diagnostika un bieži sastopamās kļūdas

Bieži sastopamas problēmas ar MediaProvider

Normālas lietošanas laikā MediaProvider parasti paliek nepamanīts. Tomēr, tāpat kā jebkuram sistēmas komponentam, tam var rasties problēmas: negaidītas izslēgšanas , kļūdas, lasot noteiktus failus, kļūmes, atjauninot metadatus, vai avārijas, skenējot bojātus sējumus.

Android ekosistēmā ir vairāki automatizēti testi , lai pārbaudītu tās pareizu darbību:

  • CtsProviderTestCases: testa komplekts Saderības testa komplekts kas validē MediaStore publisko API darbību attiecībā pret MediaProvider.
  • Multivides pakalpojumu sniedzēja testi: iekšējie testi, kas bija vērsti uz moduļa un tā komponentu specifisko uzvedību.

Izstrādātāji vai tehniķi var palaist šos testu komplektus ar tādām komandām kā:

atest --test-mapping packages/providers/MediaProvider

Tehniskajos forumos daži lietotāji ir ziņojuši par Regulāras MediaProvider avārijas atmiņas kļūdu dēļ (OutOfMemoryError), īpaši skenējot ļoti lielas video kolekcijas vai apstrādājot bojātas SD kartes nodalījumus. Šādos gadījumos ieteicams:

  • Pārbaudiet iekšējās un ārējās atmiņas fiziskais stāvoklis (formatējiet vai nomainiet karti, ja tai ir kļūdas).
  • Sistēmas uzturēšana un atjaunināti Mainline moduļi no Google Play, lai saņemtu labojumus.
  • Pārbaudiet, vai kāda lietotne ģenerē bojāti faili vai faili ar anomāliem metadatiem kas izraisa indeksēšanas kļūmes.

Ar MediaProvider saistītie rīki un utilītas

Rīki Mainline moduļu skatīšanai

Ja vēlaties uzzināt vairāk par to, kā tiek atjaunināts MediaProvider vai kurus Mainline moduļus esat instalējis, varat izmantot dažus rīkus:

  • Galvenais atjauninātājs: vienkārša lietotne, kurā ir uzskaitīti Galvenie moduļi, kas atrodas jūsu ierīcē Tas nodrošina arī saīsnes uz Google Play sistēmas atjauninājumu paneli. Tas ir noderīgi, lai pārbaudītu, vai jūsu MediaProvider un citi svarīgi komponenti ir atjaunināti.
  • Multivides pakalpojumu sniedzēja vadītājs: atvērtā koda Xposed modulis, kas ļauj Uzraudzīt un ierobežot MediaStore lietošanu lietotnēm. Ar to pieredzējuši lietotāji var pārskatīt, kuras lietotnes veic visvairāk pieprasījumu, kādas atļaujas tās izmanto un pat ierobežot noteiktu piekļuvi, lai uzlabotu privātumu.

Šāda veida rīki nav nepieciešami vidusmēra lietotājam, taču tie nodrošina papildu kontroles pakāpi tiem, kas vēlas detalizētāk pārvaldīt multivides darbību un privātumu savā Android ierīcē.

MediaProvider ir kļuvis par centrālo Android sistēmas komponentu: tas efektīvi organizē visu multivides saturu, labāk aizsargā privātumu, izmantojot krātuvi ar tvērumu, atvieglo moderno formātu transkodēšanu un neatkarīgi atjauninās, pateicoties Mainline moduļiem. Izpratne par to, kā darbojas šis neredzamais komponents, izskaidro, kāpēc mūsdienās jūsu galerija, mūzikas lietotnes un mākoņpakalpojumi darbojas ātrāk, konsekventāk un daudz drošāk nekā iepriekšējās sistēmas paaudzēs.


Pievienot kā vēlamo avotu pakalpojumā Google