I-Android MediaProvider Module: Ukuthi Iyini nokuthi Kungani Iwukhiye Ocingweni Lwakho

  • Imojula ye-MediaProvider ikuphatha kahle ukufinyelela kwefayela lemidiya futhi ivikela ubumfihlo ku-Android.
  • Kusukela ku-Android 10 ne-11, iMediaProvider ivumela izibuyekezo ezizimele ngenxa yamamojula we-Mainline.
  • Isekela ukwenziwa ngokwezifiso okuthuthukile kwabakhiqizi nabathuthukisi, ukuzivumelanisa nezimo nezidingo ezintsha.

isidlali semidiya

Eminyakeni yakamuva, i-Android ithuthuke kakhulu ekuphathweni kwefayela nasekuvikelekeni kwesistimu. Enye yezinto ezichazwe kancane—kodwa ebalulekile ekugcineni okufanele kanye nobumfihlo bomsebenzisi—idumile I-MediaProviderUma uke wazibuza ukuthi yini le ngxenye, kungani ngezinye izikhathi ivela kumilayezo yesistimu, yiziphi izinguquko ezilethwa yinguqulo ngayinye ye-Android, noma ukuthi iyithinta kanjani ifoni yakho, qhubeka ufunda ngoba sizoyichaza kabanzi lapha.

Kulula ukuthola igama le-MediaProvider lapho ubheka izinketho zeselula noma ubheka izinkundla zobuchwepheshe, kodwa abantu abaningi abacaci kahle ukuthi yenzani ngempela noma kungani kunjalo. kubalulekile ukuze izinhlelo zokusebenza ezifana negalari yezithombe, izidlali zomculo noma abaphathi bamafayela zisebenze kahleAke sihlolisise indlela i-Android ekusebenzela ngayo ukuze wazi ngokugcwele yonke into eyilethayo ekuphileni kwakho kwansuku zonke.

Iyini iMediaProvider futhi uyini umsebenzi wayo ku-Android?

El I-MediaProvider Module Ingenye yezingxenye zesistimu ye-Android enesibopho phatha, khomba, futhi unikeze ukufinyelela kumafayela emidiya exubile njengezithombe, amavidiyo nomculo ogcinwe kukho kokubili inkumbulo yangaphakathi namadivayisi angaphandle (isb., amakhadi e-SD noma amadrayivu e-USB). Umgomo wayo oyinhloko uku lungiselela imethadatha yalawa mafayela futhi uzenze zitholakale ezinhlelweni zokusebenza nge-MediaStore API yomphakathi.

Ngenxa yale mojula, izinhlelo zokusebenza zingenza izenzo ezifana nokubonisa zonke izithombe zakho ngaphandle kokuthi uphequlule mathupha ifolda yesistimu ngayinye, okwandisa isivinini nokusebenza kahle kwale mibuzo. Ukwengeza, i-MediaProvider isebenzisa imodeli yezokuphepha egxile kubumfihlo, efihla imethadatha ebucayi njengendawo yekhamera, ikakhulukazi selokhu kwakhululwa i-Android 10. Lokhu kuvikela imininingwane yakho yomuntu siqu kusukela ekufinyeleleni okungadingekile ngezinhlelo zokusebenza zezinkampani zangaphandle.

Esinye isici esibalulekile yilokho I-MediaProvider iyingxenye yalokho okubizwa ngokuthi ama-Mainline Modules (noma amamojula wesistimu angabuyekezwa), okuvumela i-Google nabakhiqizi ukuthi bayigcine inolwazi lwakamuva ngezibuyekezo ezizimele ezivela ku-Google Play, ngaphandle kokulinda inguqulo entsha egcwele ye-Android.

Ukuvela kweMediaProvider: Ukusuka ku-Android 10 kuye ku-Android 11 nangaphezulu

Ukweqa okukhulu ekuziphendukeleni kwemvelo kweMediaProvider kufike ne-Android 10, lapho yahlelwa kabusha ukuze ivumelane nomqondo wamamojula angabuyekezwa futhi yethula izinguquko ezibalulekile ekuphathweni kwefayela nemvume. Lokhu kuphumele ekuthuthukisweni okubambekayo kubo bobabili abasebenzisi nonjiniyela:

Ukwazi kanjani ukuthi yini entsha kusibuyekezo se-Android ngaphambi kokusifaka-2

  • Kusukela ku-Android 10, uhlelo ihlonza uhlobo lwefayela lemidiya elisuka kusandiso noma uhlobo lwe-MIME (ngokwesibonelo, “isithombe/png”), okuvumela incazelo engcono yezimvume ezihambisanayo nokuziphatha.
  • Igwema izindlela zokuthola okuqukethwe okungavikelekile futhi ithembele ekwabelaneni nge-typology yawo womabili amasistimu asekelwe ku-Android ne-Linux, aqinisa ukuvikeleka nokuthembeka.
  • Ivumela izinhlelo zokusebenza ukuthi zifinyelele imethadatha efanele isebenzisa I-MediaMetadataRetriever okwevidiyo/umsindo, kanye I-ExifInterface izithombe.

Ngokufika kwe-Android 11, iMediaProvider isiqine nakakhulu. Phakathi kwezici ezintsha eziphawuleka kakhulu yilezi:

  • Se ithuthukise ifayela nenqubo yokukhomba imethadatha, okuhlanganisa amakholomu amasha kusizindalwazi njengokuthi “is_favorite” (ukumaka izintandokazi) kanye nokuthi “is_trashed” (ukuze kukhonjwe amafayela kudoti).
  • Manje kungenzeka ukwenza izenzo ngobuningi phezu kwamafayela amaningi ngesikhathi esisodwa, njengokususa, ukumaka njengentandokazi, noma ukuthumela kudoti, konke ngokusebenzisana komsebenzisi oyedwa.
  • Amakholomu afana ne-“GENERATION_ADDED” nethi “GENERATION_MODIFIED” engeziwe ukuze izinhlelo zokusebenza zikwazi ukubona ngokushesha ukuthi yiziphi izici ezishintshile kusukela ekuvunyelanisweni kokugcina.
  • Ukuhlanganiswa okungcono nezinye izingxenye zesistimu, ezifana nokuthuthukiswa I-ExifInterface ukucubungula amafomethi engeziwe (i-PNG, i-WebP) nokuchasisa usuku lwangempela kuzithombe-skrini.

Mayelana nezakhiwo, i-MediaProvider iyiswe kufomethi ethi "APK-in-APEX", eyivumela ukuthi ijabulele zonke izinzuzo zamaphakheji e-APEX: isibuyekezo sangaphambi kwesikhathi ekuqaliseni kwesistimu nokulawula okwengeziwe kokuncika kwayo.

I-MediaProvider kanye ne-Mainline Module: Izibuyekezo ezizimele ku-Android

Njengengxenye yesu le-Google lokulwa nokuhlukana nokuqinisekisa ukuthi amadivayisi avikelekile nafanayo, i Amamojula omugqa omkhulu. Kusukela ku-Android 10, lawa mamojula (afana ne-MediaProvider, ART, Conscrypt, Tethering, Wi-Fi, phakathi kwamanye) angabuyekezwa ngokuhlukana nge-Google Play. Lokhu kusho ukuthi Ukuthuthukiswa kokuphepha, izici ezintsha, nosekelo lwezinhlobo eziningi zamafayela kungafika maduze futhi ngaphandle kokulinda i-OTA evela kumkhiqizi..

Uzivimba kanjani izinhlelo zokusebenza ukuthi zivale ngemuva ku-Android-4

I-MediaProvider, kanye nezinye izingxenye, ijabulele leli khono kusukela ku-Android 11. Ngakho-ke, uma i-Google ithola iphutha lokuvikeleka noma isidingo sosekelo lwamafomethi amasha emidiya, ingakwazi ukukuchibiyela futhi isabalalise ngokushesha, ukuvikela idatha yakho nokuvumela onjiniyela ukuthi basebenzise izici ezintsha ngaphandle kokuthembela emijikelezweni yokuvuselela emide.

Ukwenza ngendlela oyifisayo kanye nesandiso: I-MediaProvider yabathuthukisi nabakhi

Enye yezingxenye ezinamandla kakhulu-futhi ezaziwa kancane-ze-MediaProvider yikhono lokwenza yenza kube ngokwakho ukuziphatha kwakhoUma ungunjiniyela we-ROM wangokwezifiso, umenzi, noma unentshisekelo yobuchwepheshe, nazi izindawo ezimbalwa ongazilungisa:

  • Ukusekelwa kwamafomethi emidiya angokwezifiso: Ungakwazi ukwengeza usekelo lwamafomethi amasha ngokubhalisa isandiso esihambisanayo kanye nohlobo lwe-MIME nohlelo. Qaphela: Akwenzeki ukuba ubhale phezu kwamafomethi asevele achazwe yi-Android.
  • para amavidiyo kanye namafayela alalelwayo, I-MediaProvider ithumela kumbuzo wemethadatha I-MediaMetadataRetriever, kuyilapho ngezithombe ethembele kuzo I-ExifInterface -Izandiso ezisekela imethadatha yangokwezifiso.
  • Ukukhetha izisetshenziswa zesitoreji ezizokhonjiswa: Kuyenzeka ucacise ukuthi yimaphi amakhadi e-SD, amadrayivu e-USB, noma ama-partitions azokhonjwa njengemithombo yemidiya evumelekile. Qaphela ukuthi ungafaki amadivayisi "esikhashana" angase anqanyulwe kungazelelwe (njengedivayisi ye-USB OTG) ukuze ugweme izinkinga zokungaguquguquki.
  • Ukushintsha nokwenza ngendlela oyifisayo isitaki se-MTP: Ku-Android 11 nakamuva, ingqondo ye-MTP (Media Transfer Protocol) ihlukaniswa nemojula ngokwayo, okuvumela ukuhlanganiswa okuvumelana nezimo inqobo nje uma kuhlonipha ukusetshenziswa kwama-API omphakathi.

Ukuncika kwe-MediaProvider kanye Nezidingo Zobuchwepheshe

Lapho wenza ngokwezifiso iMediaProvider, kunezinto ezithile okufanele uzicabangele: ukuncika kwezobuchwepheshe ukuze imojuli isebenze kahle:

  • Lapho usebenzisa amafomethi wefayela lemidiya angajwayelekile (ngokwesibonelo, uma uhlelo lwakho lokusebenza lwekhamera lukhiqiza amafomethi obunikazi), ifomethi ngayinye entsha kufanele ibhaliswe ngayo I-MimeUtils nakuMedia Extractor ukuze iMediaProvider ikwazi ukukhomba ngendlela efanele.
  • Uma usebenzisa ukuphathwa kwevolumu yesitoreji ngokwezifiso, qiniseka ukuthi umaka amadivayisi ngefulegi elifanele (VolumeInfo.MOUNT_FLAG_INDEXABLE), ngakho iMediaProvider izozibona lapho ikhomba okuqukethwe.
  • Ukuqaliswa kwangokwezifiso kwe-MTP kufanele kusebenze ngokukhethekile kusetshenziswa ama-API omphakathi nawesistimu ukuze kugcinwe ukusebenzisana ne-MediaStore.

I-MediaProvider kanye nemfihlo yomsebenzisi

Ukubuyekezwa Kobumfihlo.

Enye ye Enye yentuthuko enkulu elethwe yi-MediaProvider ezinguqulweni zakamuva ze-Android ukuvikela ubumfihlo. Ukuvikelwa komsebenzisi ekufinyeleleni kohlelo lokusebenza olungagunyaziwe kumafayela abo omuntu siqu. Ngenxa yokuhlanganiswa kwayo ne-MediaStore kanye nokuphathwa kwemvume enembe kakhudlwana, abathuthukisi sebengakwazi ukufinyelela kuphela amafayela emidiya adingekayo futhi, ezimweni eziningi, abakwazi ukufinyelela ulwazi olubucayi njengendawo yesithombe noma idatha yokusetshenziswa ababekwazi ukuyifinyelela kalula ngaphambili.

Lokhu kwenza nokuphatha kube lula kubasebenzisi: manje sebengakwazi ukumaka amafayela njengezintandokazi, basuse izinto eziningi ngesikhathi esisodwa, noma babuyisele amafayela esistimu kalula kuzinhlelo zokusebenza zegalari ezisebenzisa ama-API amasha.

Ama-API nezibonelo zokusebenzisa: Indlela izinhlelo zokusebenza ezisebenzisana ngayo ne-MediaProvider

Izinhlelo zokusebenza zifinyelela amafayela emidiya ngokubuza ku MediaStore -okusebenza njengesixhumi esibonakalayo somphakathi ku-MediaProvider— ngochungechunge lwezenzo nezimpikiswano ezichazwe kuma-API ayo:

  • Izithombe namavidiyo angathathwa ngokuqondile, noma amafayela akhona kudivayisi angakhethwa, kusetshenziswa okuhlukile izinhloso ichazwe yi-MediaStore (efana ne-ActionImageCapture, i-ActionPickImages, i-ActionVideoCapture…)
  • Izinhlelo zokusebenza zingahlunga imiphumela yemibuzo zisebenzisa izimpikiswano ezifana nokuthi QUERY_ARG_MATCH_FAVORITE (ukuthola izintandokazi) noma QUERY_ARG_MATCH_TRASHED (ukuthola amafayela kudoti).
  • Onjiniyela bangenza izenzo eziyinqwaba kumafayela emidiya ngezindlela ezifana nalezi createDeleteRequest, createFavoriteRequest o createTrashRequest.
  • Isixhumi esibonakalayo se-Exif sikuvumela ukuthi ufunde futhi ulawule imethadatha yesithombe, njengokuma, uhlobo lwekhamera, indawo, njll.

Ukuhlolwa kwe-MediaProvider kanye Nokuxilongwa

Ekuphileni kwansuku zonke, i-MediaProvider ivame ukungabonakali, kodwa kunezimo lapho ingabangela khona izinkinga-ngokwesibonelo, ukuvala shaqa okungalindelekile noma amaphutha lapho ufunda amafayela athile. Ukuze uqinisekise ukusebenza kwayo okulungile, i-Android ecosystem ine izivivinyo ezihlanganisiwe njengoba I-CtsProviderTestCases (kuma-API womphakathi) kanye MediaProviderTests (okwezingxenye zangaphakathi). Uma ungunjiniyela noma uchwepheshe, ungawasebenzisa ngemiyalo efana ne-"test -test-mapping packages/abahlinzeki/MediaProvider" ukuze uthole ukuxilonga okunembile.

Ezinye izinkundla zobuchwepheshe ziye zabika Ukuphahlazeka okuphindayo ku-MediaProvider Lezi zinkinga zixhunywe nezinkinga zememori (OutOfMemoryError), ikakhulukazi uma iskena izinhlobo ezithile zamafayela evidiyo noma lapho uphatha izingxenyeni zesitoreji esonakele. Kulezi zimo, ngokuvamile kuwumqondo omuhle ukuhlola isimo somzimba sesitoreji sakho (inkumbulo yangaphakathi, ikhadi le-SD, njll.) futhi ugcine isistimu yakho isesikhathini ukuze ugweme ukungahambisani.

Amathuluzi ahlobene nezinsiza: I-Mainline Updater kanye neMedia-Provider-Manager

Dala abasebenzisi ku-Android ukuze babelane ngeselula 7

Uma ufuna ukwazi ukuthi yimaphi amamojula e-Mainline ifoni yakho ewasekelayo, akhona amathuluzi afana ne uhlelo lokusebenza lwamahhala lwe-Mainline Updater, okukuvumela ukuthi ubone uhlu lwakamuva lwamamojula afakiwe futhi ufinyelele kalula izinketho zokubuyekeza isistimu. -Google PlayNgale ndlela, ungahlola ukuthi i-MediaProvider yakho isesikhathini samanje futhi uzuze ekuthuthukisweni kwayo.

Ngakolunye uhlangothi, kukhona izinsiza ezifana Umphathi Womhlinzeki Wezindaba (imojula ye-Xposed yomthombo ovulekile) ekuvumela ukuthi uqaphe noma ukhawule ukusetshenziswa kwezinhlelo zokusebenza kweSitolo Semidiya, inikeze ukulawula okuthe xaxa kobumfihlo bakho kanye nokusetshenziswa kwesitoreji. Lezi zinhlobo zamathuluzi zibalulekile ezindaweni ezithuthukile noma uma ufuna ukuvimbela izinhlelo zokusebenza ezithile ekusebenziseni kabi isistimu yefayela lemidiya.

Buka okuqukethwe kwedijithali
I-athikili ehlobene:
Umhlahlandlela wokufaka i-Plex ku-Android futhi uthathe ulwazi lwakho lwe-multimedia uluyise kwelinye izinga

Imaphi amanye amamojula we-Mainline akhona futhi iMediaProvider ihlobene kanjani nawo?

I-MediaProvider ingenye nje kweziningi Amamojula omugqa omkhulu ezifuna ukuthuthukisa ukuvikeleka, ukuguquguquka, nokuba bukhali kwezibuyekezo ze-Android. Amanye amamojula aphawulekayo afaka:

  • I-ART: Ilawula imvelo yokusebenzisa uhlelo lokusebenza.
  • I-Conscrypt: Ithuthukisa ukuphepha kwe-cryptographic.
  • Isixazululi se-DNS: Ilungiselela ukulungiswa kwekheli lewebhu.
  • Amakhodekhi emidiya: Igcina amadekhoda omsindo nevidiyo esesikhathini samanje.
  • I-Wi-Fi: Ikuvumela ukuthi uthuthukise ukuxhumana okungenantambo ngaphandle kokuthuthukisa lonke uhlelo.

Ukuba ne-MediaProvider kudivayisi yakho, njengengxenye yala mamojula, kukuqinisekisa ukufinyelela okusheshayo ezicini ezintsha namapeshi okuphepha okuphatha amafayela emidiya exubile, ngaphandle kokuncika kunqubomgomo yokuvuselela yomkhiqizi.

Ukuze uthole ukuthi yiziphi izingxenye zocingo lwakho ezingathuthukiswa ngazinye, ungabheka uhlu lwemojuli ye-Mainline usebenzisa amathuluzi azinikele noma ngokubheka izinketho zokubuyekeza isistimu ku-Google Play.