I-MediaProvider ku-Android: ukuthi iyini, isebenza kanjani, nokuthi kungani ibaluleke kangaka

  • I-MediaProvider iyimojula ye-Android ekhomba futhi iveze izithombe, amavidiyo, nomsindo kuzinhlelo zokusebenza nge-MediaStore, okuthuthukisa ukusebenza kanye nokuhleleka.
  • Iyingxenye yamamojula e-Mainline, ngakho-ke ibuyekezwa kusuka ku-Google Play ukuze yengeze ukuhambisana namafomethi amasha futhi ilungise amaphutha okuphepha.
  • Qinisa ubumfihlo ngokusebenzisa isitoreji esilinganiselwe, ukulawula izimvume, nokufihla imethadatha ebucayi njengendawo yesithombe.
  • Ama-OEM kanye nabathuthukisi bangenza ngezifiso amafomethi asekelwayo, amavolumu ukuze afakwe ohlwini, futhi basebenzise izici ezithuthukisiwe njengokushintsha ikhodi yevidiyo ehambisanayo.

Isitoreji se-multimedia se-Android se-MediaProvider

Eminyakeni yamuva nje, i-Android ithuthuke kakhulu ekuphathweni kwayo kwamafayela kanye nokuphepha kohlelo. Esinye sezici ezingachazwanga kahle—kodwa ezibalulekile ekugcineni okufanele kanye nobumfihlo bomsebenzisi—yi- module ye-MediaProvider eyaziwayo . Uma wake wazibuza ukuthi iyini le ngxenye, kungani ngezinye izikhathi ivela emilayezweni yohlelo, ukuthi ithuthukisa ini ngenguqulo ngayinye ye-Android, noma ukuthi iyithinta kanjani ifoni yakho, sizoyichaza ngokuningiliziwe lapha.

Kulula ukuthola igama elithi MediaProvider ngenkathi uzulazula kuzilungiselelo zefoni yakho, uhlola ukusetshenziswa kwesitoreji, noma uphequlula izinkundla zobuchwepheshe, kodwa abantu abaningi abaqiniseki ngokuphelele ukuthi lenzani noma ukuthi kungani kubalulekile ukuthi izinhlelo zokusebenza ezifana negalari yezithombe, izidlali zomculo, kanye nabaphathi bamafayela zisebenze kahle . Ake sibheke eduze ukuze wazi ngokugcwele indima yalo kokuhlangenwe nakho kwakho kwansuku zonke kwe-Android, kungakhathaliseki ukuthi ufuna nje ukuqonda kangcono ifoni yakho noma ukuthuthukisa izinhlelo zokusebenza ezenziwe ngokwezifiso noma ama-ROM.

Iyini iMediaProvider futhi uyini umsebenzi wayo ku-Android?

Iyini imojuli ye-Android MediaProvider?

El Imojula ye-MediaProvider Kungenye yezingxenye zangaphakathi zesistimu ye-Android ezibhekene phatha, faka uhlu futhi unikeze ukufinyelela kumafayela e-multimedia njengezithombe, amavidiyo, nomculo ogcinwe kokubili kumemori yangaphakathi namadivayisi angaphandle (amakhadi e-SD, amadrayivu e-USB, njll.). Akuyona uhlelo lokusebenza olujwayelekile, kodwa uhlelo lokusebenza Umhlinzeki Wokuqukethwe Kwesistimu okuncike kusizindalwazi somphakathi MediaStore ukuze ezinye izinhlelo zokusebenza zikwazi ukufinyelela ngokushesha nangokuphephile okuqukethwe kwe-multimedia.

Umsebenzi wayo oyinhloko ukuhlaziya amafayela, ukukhipha i-metadata yawo, nokuwakhomba kumathebula alungiselelwe kahle. Le metadata ifaka izinto ezifana nohlobo lwefayela, ubude bevidiyo noma umsindo, ukulungiswa kwesithombe, usuku lokuthwebula, usayizi, indawo yokugcina, kanye, kwezinye izimo, idatha ye-EXIF ethuthukisiwe yezithombe.

Ngenxa yale module, izinhlelo zokusebenza zingabonisa wonke umtapo wakho ngaphandle kokuskena ngesandla wonke umuthi wefolda . Igalari yezithombe, isibonelo, ayidingi ukuskena yonke ifolda: ithumela umbuzo ku-MediaStore futhi kuma-millisecond ithola uhlu olunekhasi lwazo zonke izithombe, ezihlungiwe futhi ezihlungiwe njengoba kudingeka. Lokhu kuthuthukisa kakhulu ukusebenza kanye nokuphila kwebhethri uma kuqhathaniswa nokuskena kwesistimu yefayela eqondile.

I-MediaProvider iphinde ihlanganiswe nemodeli yesitoreji esinobubanzi . Empeleni, lokhu kusho ukuthi imojuli isebenzisa imithetho yokuphepha ukulawula ukuthi yiziphi izinhlelo zokusebenza ezingabuka futhi ziguqule amafayela athile. Isibonelo, ifihla noma ishintshe imethadatha ebucayi , njengendawo eqondile lapho kuthathwe khona isithombe, lapho uhlelo lokusebenza lungadingi lolo lwazi noma lungenazo izimvume ezidingekayo.

Esinye isici esibalulekile ukuthi i-MediaProvider iyingxenye yamamojula abizwa ngokuthi ama-Mainline (noma amamojula angabuyekezwa uhlelo), okuvumela i-Google nabakhiqizi ukuthi bayibuyekeze ngokuzimela nge-Google Play . Ngale ndlela, ubuthakathaka bokuphepha buyalungiswa, ukuhambisana namafomethi amasha efayela kuyangezwa, futhi izici ziyathuthukiswa ngaphandle kokulinda isibuyekezo esigcwele sesistimu.

Indlela i-MediaProvider ethonya ngayo impilo yakho yansuku zonke

I-MediaProvider isetshenziswa nsuku zonke

Ngisho noma ungakwazi ukukubona, i-MediaProvider isebenza ngemuva njalo. Ezinye izibonelo ezicacile zendlela ethinta ngayo ulwazi lwakho lwansuku zonke yilezi:

  • Ukuvulwa kwegalari okusheshayo: Uma uvula uhlelo lokusebenza lwezithombe, lubuza i-MediaStore futhi, ngenxa yokufakwa kwe-index kwangaphambilini kwemojuli, lungabonisa izithombe zakho cishe ngokushesha.
  • Ukusesha ngosuku, uhlobo, noma i-albhamu: Amagalari amaningi akuvumela ukuthi uhlunge ngamavidiyo, ama-selfie, izithombe-skrini, noma izinsuku ezithile. Lonke lolu lwazi luvela ku- imethadatha ephethwe yi-MediaProvider.
  • Abadlali bomculo nama-podcast: Uhlu ngomculi, i-albhamu, uhlobo, noma uhlu lwadlalwayo lusekelwe kudatha eqoqwe yi-MediaProvider futhi yayenza yajwayelekile kumafayela omsindo.
  • Izinhlelo zokusebenza zemiyalezo nezokuxhumana: Uma wabelana ngesithombe esivela ku-WhatsApp, Telegram, noma ku-Instagram usebenzisa isikhethi sesithombe, empeleni zinjalo ukufunda ikhathalogi ye-MediaStore kanye nokuhlunga ngohlobo lokuqukethwe okuceliwe.
  • Abaphathi bamafayela: Ezinye iziphequluli zisebenzisa imibuzo ye-MediaStore ukuze zifake ohlwini ngokushesha zonke izinhlobo zemidiya, esikhundleni sokuphequlula ngesandla izinkulungwane zamafolda namafayela.

Ngisho nemisebenzi engabonakali kangako, njengesithombe esithathwe ngekhamera ebonakala kugalari noma efwini ngemizuzwana embalwa, ivame ukuhlanganiswa ne-MediaProvider, enesibopho sokubhalisa into entsha, ukukhipha imethadatha yayo, nokwazisa izinhlelo zokusebenza ezinentshisekelo ngezinguquko.

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

Izibuyekezo ze-MediaProvider

Intuthuko enkulu ekuthuthukisweni kwe-MediaProvider yaqala ngokufika kwesitoreji esilinganiselwe ku-Android 10. Kusukela ngaleso sikhathi kuqhubeke, uhlelo lwahlela kabusha indlela amafayela emidiya atholakala ngayo nokuthi atholakala kanjani ezinhlelweni zokusebenza, okuphoqa i-MediaProvider ukuthi ihlakaniphe kakhulu futhi ivikeleke kakhudlwana.

Izinguquko zethulwe kusukela ku-Android 10

Kusukela kuleyo nguqulo, i-Android yethule ukuthuthukiswa okuningana okubalulekile okuhlobene nokuhlonza nokukhipha idatha kumafayela e-multimedia :

  • Uhlelo lunquma uhlobo lokuqukethwe kwefayela usebenzisa ingxenye yokuqala yohlobo lwe-MIMEIsibonelo, uyazi ukuthi image/png y image/x-newly-invented-format Bobabili izinhlobo zesithombeLokhu kuvumela incazelo engcono yezimvume kanye nokuziphatha okuhlobene nomsebenzisi.
  • Ukwenza ngcono ezokuphepha, susa uhlobo lwe-MIME kuphela kusandiso kusuka kufayela, ukugwema amasu okuthola okuqukethwe angavula ubuthakathaka.
  • Ukuzimisela kwe-MIME kusekelwe ku- inhlanganisela yamatafula azuzwe njengefa ku-Debian Linux kanye nezincazelo ze-Android uqoboLokhu kuphumela ekutholakaleni okuthembekile kakhulu nokungaguquguquki kwamafomethi angavamile.
  • I-MediaProvider idlulisela ukutholwa kwe-metadata ethuthukisiwe kumathuluzi akhethekile: MediaMetadataRetriever okwamafayela video/* y audio/*, futhi ExifInterface ngamafayela image/*, kanjalo ukuthola ubude besikhathi, i-bitrate, isixazululo, ukuqondiswa, ulwazi lwekhamera nolunye ulwazi oluwusizo.

Lolu hlu lwezinguquko luvumele izinhlelo zokusebenza ukuthi zithole imethadatha ethembekile nejwayelekile , ngenkathi kuqinisa izinyathelo zokuphepha futhi kubeka isisekelo sezimvume zokufinyelela ezithuthukisiwe esizaziyo namuhla.

Ukuthuthukiswa kwethulwe kusukela ku-Android 11

Nge-Android 11, i-MediaProvider yakhele phezu kwalezi zisekelo futhi yathatha isinyathelo esengeziwe ekuhleleni okuqukethwe, ukusebenza, kanye namakhono ezinhlelo zokusebenza :

  • Zenziwe ukuthuthuka okujulile ekufakweni kwezinkomba yamafayela kanye ne-metadata. Manje imojula ivumelanisa i-metadata etholakalayo nalokho okuvezwa yi-MediaStore APIs, ivumelanisa kangcono lokho okugcinwe ngaphakathi nalokho izinhlelo zokusebenza ezingakubuza.
  • Amakholomu amasha angeziwe ku-database, njengokuthi is_favorite kanye nempikiswano yokubonisana QUERY_ARG_MATCH_FAVORITELokhu kuvumela izinhlelo zokusebenza zohlobo lwegalari Hlunga ngokushesha okuqukethwe okumakwe njengezintandokazi ngomsebenzisi.
  • I-MediaProvider iqalile uku imethadatha yesikhala sombala wenkombaokuyisisekelo sokuphatha okuqukethwe kwe-HDR, izithombe ezingokoqobo kakhulu empilweni, kanye nokumelwa okunembe kakhudlwana ezikrinini ezithuthukisiwe.
  • Ikholomu yethulwe is_trashed nengxabano QUERY_ARG_MATCH_TRASHED ukuhlukanisa ngokucacile amafayela aku- phinda usebenzise imigqomookuvumela amagalari ukuthi aphathe lowo mgqomo kadoti ngokwemvelo.
  • Baqhamuke Ama-API amasha okusebenza ngobuningi ezintweni eziningana ngebhokisi lokuqinisekisa lomsebenzisi oyedwa, okuhlanganisa:
    • createDeleteRequest() ukususa amafayela amaningi ngesikhathi esisodwa.
    • createFavoriteRequest() ukumaka noma ukususa uphawu lwezinto eziningi ozithandayo ngesenzo esisodwa.
    • createTrashRequest() ukuthumela amaqoqo amafayela ngqo kudoti.
    • createWriteRequest() ukucela izimvume zokubhala ezintweni eziningi.
  • Kwanezelwa amakholomu amasha afana nalawa GENERATION_ADDED y GENERATION_MODIFIED ezivumela izinhlelo zokusebenza thola ngokushesha ukuthi yini eshintshile kusukela ekuvumelanisweni kwangaphambilini. ngaphandle kokuskena kabusha wonke umtapo wolwazi.
  • Kufakwe eyodwa I-API Yomphakathi ye GROUP BY okukuvumela ukuthi uqoqe imiphumela nge-albhamu, usuku noma enye imethadatha ngaphandle kokwenza ukucubungula okuyinkimbinkimbi kohlelo lokusebenza.
  • Kwathuthukiswa ExifInterface ukuze Khipha imethadatha kusuka ezitsheni ze-PNG kanye ne-WebP, ukwandisa inani lamafomethi ezithombe acutshungulwa ngendlela ethuthukisiwe.
  • I-SystemUI iqalile ukubhala imethadatha DateTimeOriginal kuzithombe-skrini, ukuze i-MediaProvider ikwazi ukuhlela kangcono nokubonisa lezi zinhlobo zezithombe ngaphakathi kwegalari.

Ngokuphathelene nokwakhiwa, i-MediaProvider ithuthelwe kufomethi ye-APK-in-APEX . Lokhu kusho ukuthi ikhodi ye-Java ipakishwe njenge-APK ngaphakathi kwesitsha se-APEX sezinga lesistimu. Inzuzo ukuthi imojuli ingalayishwa kusenesikhathi kakhulu enkambisweni yokuqalisa , ngisho nangaphambi kwezingxenye eziningi zohlaka, kuyilapho izuza futhi ekubuyekezweni okusheshayo nge-Google Play.

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

Amamojula Ayinhloko ku-Android

Enye yamasu amakhulu e-Google okulwa nokuqhekeka nokunikeza amadivayisi aphephile kakhulu ukudala amamojula e-Mainline . Lezi yizingxenye zesistimu ezingabuyekezwa ngokuzimela kusuka ku-Google Play, ngaphandle kokungenelela okuqondile komkhiqizi noma isidingo sokufaka isibuyekezo esigcwele se-OTA.

Lawa mamojula afaka i-MediaProvider, kanye nezinye ezifana ne -ART (indawo yokusebenza kwesikhathi sohlelo lokusebenza), i-Conscrypt (umtapo wolwazi we-cryptographic), i-Media , i-Media Codecs , i-Wi-Fi , i-Tethering , nezinye eziningi. Ndawonye, ​​​​zivumela i-Android ukuthi ilungise amaphutha abalulekile, ithuthukise ukusebenza, futhi yengeze izici ngaphandle kokuthembela ngokuphelele ohlelweni lokukhishwa komkhiqizi ngamunye.

Kubalulekile ukucacisa ukuthi, yize ukwakheka kwe-modular kwaqala ukwethulwa nge-Android 10, i-MediaProvider, ikakhulukazi, izuze kuzibuyekezo ze-Mainline eziqala nge-Android 11. Ngenxa yalokhu, uma kutholwa ubuthakathaka bokuphepha, ukungahambelani namafomethi amasha e-multimedia, noma inkinga yokusebenza kokukhomba, i-Google ingayilungisa futhi ikhiphe isibuyekezo njenganoma yiluphi olunye uhlelo lokusebenza ku-Google Play. Ngale ndlela, ifoni yakho ihlala iphephile futhi ihambisana nayo yonke indawo, noma ngabe umenzi wakho akasheshi ukukhipha izinguqulo ezintsha ze-Android.

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

Amamojula amakhulu ahlobene ne-MediaProvider

I-MediaProvider ingenye yamamojula amaningi e-Mainline aklanyelwe ukwenza uhlelo lube yimodular kakhulu, luphephile, futhi luthuthuke kalula. Amanye abaluleke kakhulu, ikakhulukazi lawo ahlobene nesipiliyoni se-multimedia kanye nenethiwekhi, yile:

  • Abezindaba: Iphatha ukucutshungulwa kwamafayela e-multimedia kudivayisi yeselula, okuhlanganisa ukudlala, ukuthwebula, kanye nezinsizakalo zokuphatha ukusakaza.
  • Amakhodekhi emidiya: Igcina ama-codec omsindo namavidiyo esesikhathini, okuvumela ukuhambisana okuthuthukisiwe kanye nokuphepha ekubhaleni nasekubhaleni ngaphandle kokuthinta lonke uhlelo.
  • I-ART: Iphatha indawo yokusebenza kwe-app (ukuhlanganiswa, ukulungiswa kwe-bytecode, njll.). Ukuthuthukiswa kule module kuthinta ngqo i- ukusebenza kohlelo lokusebenza.
  • I-Conscrypt: Ibuyekeza ingxenye ye-cryptographic yesistimu, ebalulekile ekuxhumekeni okuphephile, izitifiketi, kanye nokubethela.
  • I-Wi-Fi: Iqukethe i-logic yokuxhumeka kwe-Wi-Fi, evumela ukusetshenziswa kwe Ukuthuthukiswa kokuzinza, ukuhambisana, kanye nokuphepha ngaphandle kwe-OTA ephelele.
  • Ukusebenzisa njengemodemu: Lawula ukwabelana ngoxhumano lwe-Wi-Fi, i-USB, i-Bluetooth noma i-Ethernet ngedivayisi yakho yeselula.
  • Isilawuli Semvume: Buyekeza imojuli ephatha izimvume kanye nezinto zobumfihlo zabasebenzisi.

I-MediaProvider isebenzisana eduze namamojula e -Media kanye ne-Media Codecs , njengoba lawa mamojula okugcina enesibopho sokubhala ikhodi nokucubungula okuqukethwe okufakwa ku-index yi-MediaProvider. Uma kukhishwa amafomethi amasha noma ama-codec akhona ebuyekezwa, i-MediaProvider ingaqala ukubona nokubhala kuhlu lawa mafomethi amasha (isibonelo, izinhlobo ezintsha ze-HEVC, i-HDR, noma ama-codec alalelwayo) ngaphandle kokudinga isibuyekezo esigcwele se-Android, uma nje amanye amamojula emidiya nawo ebuyekeziwe.

Ukuze uthole ukuthi yimaphi amamojula e-Mainline asekelwa yifoni yakho, ungasebenzisa amathuluzi afana nohlelo lokusebenza lwamahhala i-Mainline Updater , olubonisa ukuthi yimaphi amamojula akhona futhi, ngenkinobho eyodwa, lukuyisa esigabeni se-System Updates se-Google Play . Lapho uzobona ukuthi kukhona yini ama-patches alindile athinta, phakathi kwabanye, i-MediaProvider.

Umhlinzeki we-Media, ubumfihlo kanye nokuphepha kwesitoreji

Umhlinzeki Wobumfihlo kanye Nemidiya

Enye yentuthuko enkulu yakamuva ehlobene ne-MediaProvider ukuvikelwa kobumfihlo bomsebenzisi . Ngaphambilini, izinhlelo zokusebenza eziningi bezikwazi ukufinyelela amafolda aphelele kusitoreji sangaphandle futhi zifunde imethadatha enemininingwane eminingi—kufaka phakathi indawo ye-GPS efakwe ezithombeni—ngaphandle kokulungiswa kahle uhlelo.

Ngokuhlanganiswa kwesitoreji esihlanganisiwe + MediaProvider + MediaStore , izinto zishintshile:

  • Izinhlelo zokusebenza zine ukufinyelela okukhawulelwe ezithombeni, amavidiyo, nomsindo. Isibonelo, uhlelo lokusebenza lokuhlela izithombe lungafinyelela isithombe esithile esikhethwe ngumsebenzisi ngokusebenzisa isikhethi sesithombekodwa hhayi yonke igalari yakho.
  • I-MediaProvider ingakwazi lungisa noma ukhawulele imethadatha ebucayi, njengendawo eqondile yokuthwebula noma ulwazi lwekhamera yangaphakathi, uma uhlelo lokusebenza lungadingi leyo datha.
  • Izimvume ziba ziningi i-granular futhi isobalaAkuseyona into yokuvumela noma ukwenqabela ukufinyelela okugcwele kwisitoreji, kodwa mayelana nokunikeza ukufinyelela ku- izinhlobo ezithile zokuqukethwe (izithombe, amavidiyo, umsindo) noma amafayela akhethwe ngumsebenzisi.
  • Isivikelo kuzinhlelo zokusebenza ezinonya ezizama ukuskena isitoreji ukuze zithole amadokhumenti ayimfihlo noma okuqukethwe okubucayi siyaqiniswa. I-MediaProvider isebenza njenge isihlungi kanye nompempe ngalokho okungabonakala noma okuguquliwe.

Konke lokhu kuhlanganiswe namathuba okuhlangenwe nakho okuthuthukile, njenge- Photo Picker yakamuva kanye nabahlinzeki bokuqukethwe kwemidiya okusekelwe efwini , lapho i-MediaProvider nayo iyingxenye yokugeleza kwedatha.

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

Izinhlelo zokusebenza ezisebenzisa i-MediaProvider

Izinhlelo zokusebenza zomsebenzisi azixhumani ngqo ne-MediaProvider, kodwa zisebenzisa i-MediaStore , i-API yomphakathi esebenza njengesixhumi esibonakalayo. Le API inikeza uhlelo oluphelele lwezinhloso, ama-constant, kanye nezindlela zombuzo zokufinyelela amafayela emidiya ngendlela ejwayelekile.

Imizamo yokuthwebula nokukhetha okuqukethwe

Phakathi kwezinhloso ezivelele kakhulu ezisebenzisa i-MediaStore (futhi, ngokwengeziwe, i-MediaProvider) yilezi:

  • MediaStore.ACTION_IMAGE_CAPTURE: Ikuvumela ukuthi uvule ikhamera ukuze uthwebule isithombe bese usibuyisela kuhlelo lokusebenza lokushaya ucingo.
  • MediaStore.ACTION_IMAGE_CAPTURE_SECURE: Kufana nokwangaphambilini, kodwa kuklanyelwe izindawo lapho idivayisi ivikelwe khona (i-PIN, iphethini, i-biometrics) kanye nomongo ophephile okufanele ugcinwe.
  • MediaStore.ACTION_VIDEO_CAPTURE: Qala ikhamera kwimodi yevidiyo bese ubuyisela umphumela kuhlelo lokusebenza lokushaya ucingo.
  • MediaStore.ACTION_PICK_IMAGES: vula isikhethi sesithombe I-Android yesimanje, enikeza ulwazi oluhlangene lokukhetha izithombe namavidiyo avela emithonjeni ehlukene (isitoreji sendawo, ifu, njll.).
  • MediaStore.ACTION_PICK_IMAGES_SETTINGS: Lokhu kuholela kuzilungiselelo ezihlobene nesikhethi sezithombe kanye nabahlinzeki bemidiya.
  • MediaStore.ACTION_REVIEW y MediaStore.ACTION_REVIEW_SECURE: Zikuvumela ukuthi ubuyekeze noma ubuke kuqala okuqukethwe kwe-multimedia okusanda kuthwetshulwa kumongo olawulwayo.

Ngaphezu kwalezi zinhloso, i-MediaStore ichaza uhlu olude lwezinto ezengeziwe nezingaguquki i-MediaProvider ezihloniphayo nezizisebenzisayo ukusebenzisa imithetho ethile. Ezinye izibonelo:

  • EXTRA_DURATION_LIMIT: isikhathi esiphezulu sokurekhoda esivunyelwe uma kuqoshwa ividiyo.
  • EXTRA_SIZE_LIMIT: usayizi wefayela ophumayo omkhulu.
  • EXTRA_OUTPUT: I-URI lapho isithombe noma ividiyo ezovela izogcinwa khona.
  • EXTRA_PICK_IMAGES_MAX: inani eliphezulu lezinto umsebenzisi angazikhetha kuseshini yokukhetha.

Imibuzo ethuthukisiwe ku-MediaStore

Izinhlelo zokusebenza ezidinga ukufunda umtapo wezindaba zisebenzisa imibuzo ku-MediaStore enezimpikiswano nezihlungi ezahlukahlukene. Eminye imisebenzi evezwe yi-MediaProvider nge-MediaStore yile:

  • Kuhlungwe ngezintandokazi kanye nodoti: kusetshenziswa izimpikiswano QUERY_ARG_MATCH_FAVORITE y QUERY_ARG_MATCH_TRASHEDizinhlelo zokusebenza zingathola izinto ezimakwe njengezintandokazi kuphela noma lezo ezisemgqonyeni kadoti.
  • Ukutholwa koshintsho olwengeziwe: amakholomu afana GENERATION_ADDED y GENERATION_MODIFIED Zikuvumela ukuthi ubone ngokushesha ukuthi yiziphi izakhi ezingeziwe noma eziguquliwe kusukela ekuvumelanisweni kwangaphambilini, into ebalulekile kuzinhlelo zokusebenza zokusekelayo noma kumagalari athuthukile.
  • Imisebenzi eminingi elawulwa ngumsebenzisi: izindlela ezifana createDeleteRequest(), createTrashRequest(), createFavoriteRequest() o createWriteRequest() vumela izinhlelo zokusebenza phakamisa izinguquko zeqembuKodwa uhlelo olubonisa ingxoxo yokuqinisekisa kumsebenzisi ukuze abe nezwi lokugcina.
  • Ukufunda nokubhala EXIF: ngokusebenzisa ExifInterfaceIzinhlelo zokusebenza zingafunda izinkambu ezifana nokuqondiswa, isikhathi sokuthwebula, imodeli yekhamera, indawo (uma ikhona futhi ivunyelwe umsebenzisi), kanye neminye imethadatha. Lokhu kubalulekile ku- zungezisa izithombe ngendlela efanele, uzihlele ngokulandelana kwazo, noma ubonise idatha yokuthwebula.

I-MediaProvider, isitoreji samafu kanye nesikhethi sezithombe

Umhlinzeki wemidiya kanye nesitoreji samafu

Ngokufika kwe -Photo Picker yesimanje kanye nabahlinzeki bemidiya abasekelwe efwini , indima ye-MediaProvider isibe yinto ebaluleke kakhulu ekuhambeni komsebenzi wokukhetha izithombe namavidiyo.

I-Android ivumela izinhlelo zokusebenza ezithile, ngokuvamile izinsizakalo zezithombe zamafu eziqokwe abakhiqizi, ukuthi zisebenze njenge- CloudMediaProviders . Lezi zinhlelo zokusebenza zinikeza okuqukethwe okugcinwe efwini kumkhethi wezithombe ukuze umsebenzisi angakhetha hhayi amafayela endawo kuphela kodwa nalawo agcinwe kumasevisi akude.

Kulesi simo, i-MediaProvider kanye ne-Photo Picker basebenzisana:

  1. Uhlelo luqalisa umhlinzeki wefu okhethwayo futhi luvumelanisa ngezikhathi ezithile i-multimedia metadata nge-backend yesikhethi sesithombe.
  2. Uma uhlelo lokusebenza luvula i-Photo Picker lusebenzisa izinhloso ezifana nokuthi ACTION_PICK_IMAGES o ACTION_GET_CONTENT, isikhethi hlanganisa ibe yigridi eyodwa izakhi zasendaweni ezinikezwe yi-MediaProvider kanye nezakhi ezikude ezinikezwe yi-CloudMediaProvider.
  3. Njengoba umsebenzisi eskrola, isikhethi siyakhuthaza izithonjana ezilungiselelwe kahle kubahlinzeki, ukuze ukulayisha kusheshe futhi kube ngcono.
  4. Uma sekuqediwe ukukhetha, uma okuqukethwe kwefu kukhethwa, uhlelo lukhiqiza Vikela ama-URI Futhi i-MediaProvider ixhumanisa, nge-FUSE nezinye izendlalelo, ukufinyelela idatha yangempela, ivikela njalo izimvume kanye nobumfihlo.

I-CloudMediaProvider, yona, iveza izindlela ezifana nalezi onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()okuyinto esetshenziswa yi-Photo Picker ukuze ibhale izinto, ama-albhamu, okuqukethwe okususiwe, kanye nokuvula kokubili ukubuka kuqala kanye nefayela eligcwele. Nakuba lezi zindlela zisetshenziswa ngaphandle kwe-MediaProvider, imojuli yemidiya yesistimu ihlangana nazo ukuze inikeze okuhlangenwe nakho okuqhubekayo kokufinyelela imidiya yendawo neyefu.

I-MediaProvider kanye nokudluliselwa kwekhodi kwevidiyo okuhambisanayo

Umhlinzeki we-transcoding yevidiyo kanye nemidiya

Esinye isici esithuthukisiwe lapho i-MediaProvider idlala khona indima ebalulekile ukudluliselwa kwekhodi kokuqukethwe kwemidiya okuhambisanayo . Lesi sici sivumela amadivayisi ukuthi asebenzise amafomethi evidiyo esimanje futhi asebenzayo—njenge-HEVC noma amaphrofayela athile e-HDR—ngaphandle kokuphazamisa ukuhambisana nezinhlelo zokusebenza ezindala eziqonda kuphela amafomethi akudala njenge-AVC (H.264).

Indlela yokusebenza isebenza kanje:

  • Abakhiqizi nabasebenzisi bangalungiselela ikhamera ukuthi qopha ku-HEVC ngokuzenzakalelayo noma ezinye izinhlobo ezisebenza kahle kakhulu esikhaleni kanye nomkhawulokudonsa.
  • Uma uhlelo lokusebenza oluthi ayisekeli i-HEVC Uma uzama ukuvula ividiyo nge-MediaStore kanye ne-MediaProvider, uhlelo lungase vimba ukufundwa kwefayela ngenxa yokusebenzisa i-FUSE (Filesystem in Userspace).
  • Uma kutholakala ukuthi uhlelo lokusebenza alusekeli ifomethi, i-MediaProvider, kanye ne- Isevisi Yokudlulisa Ikhodi Yemidiya, iqala ukuguqulwa kwangemuva ukuze ikhiqize inguqulo ku-AVC noma enye ifomethi ehambisanayo.
  • Uhlelo lokusebenza luthola incazelo yefayela ekhomba inguqulo esivele ishintshiwe (noma eyasekuqaleni, uma uhlelo lokusebenza lusekela ifomethi), ngendlela esobala ngokuphelele kunjiniyela.

Le nqubo yokudlulisa ikhodi ilawulwa yimikhawulo yesikhathi kanye nezinsizakusebenza ukuvimbela ukusetshenziswa kabi: isibonelo, amavidiyo afinyelela ubude obuthile kuphela acutshungulwayo, futhi inani lezikhathi ezilandelanayo noma isikhathi sokucubungula esiphelele ngohlelo lokusebenza ngalunye sinqunyelwe. Uma le mikhawulo idluliwe, uhlelo lubuyisela ifayela lokuqala, elingacutshungulwanga.

Ukuze kufezwe lokhu, ukwakheka kuhlanganisa izingxenye eziningana:

  • I-MediaTranscodingManager: I-API Yesistimu evumela i-MediaProvider nezinye izingxenye zohlaka ukuxhumana nesevisi yokudlulisa ikhodi.
  • Isevisi Yokudlulisa Ikhodi Yemidiya: isevisi ephatha imigqa yokudlulisa ikhodi, izikhathi ezisebenzayo, kanye nokwabiwa kwezinsiza ze-codec.
  • I-MediaTranscoder: umtapo wolwazi wendabuko owenza ukuguqulwa phakathi kwamafomethi, kuncike ku I-MediaCodec kanye nasezithasiselweni ze-OEM ezingaba khona zemisebenzi efana nokuguqulwa kwe-HDR → SDR.

I-MediaProvider iphakathi nendawo yalokhu kugeleza konke: yimojuli evimba umzamo wokufunda amafayela , inqume ukuthi ukudlulisa ikhodi kuyadingeka yini noma cha ngokuya ngamakhono ohlelo lokusebenza, futhi ekugcineni ilethe incazelo efanele, kufayela lokuqala noma elidluliselwe ikhodi.

Ukwenza ngendlela oyifisayo kanye nesandiso: I-MediaProvider yabathuthukisi nabakhi

Abathuthukisi kanye nomhlinzeki wemidiya

Esinye sezici ze-MediaProvider ezinamandla kakhulu—futhi ezingaziwa kakhulu—yikhono lokwenza ngokwezifiso ukuziphatha kwayo . Lokhu kuyathakazelisa kakhulu abathuthukisi be-ROM abangokwezifiso, ama-OEM, kanye nabakhiqizi , kodwa futhi kuyasiza ukuqonda ukuthi kungani amanye amadivayisi eziphatha ngendlela ehlukile ngandlela thile ngamafomethi noma izindlela ezithile zokugcina.

Amafomethi emidiya enziwe ngokwezifiso

Abakhiqizi bangangeza ukwesekwa kwamafomethi emidiya ayimfihlo noma angajwayelekile . Kuhlobo ngalunye olusha, kumele:

  • Bhalisa a isandiso sefayela esiyingqayizivele futhi uyihlobanise nohlobo oluthile lwe-MIME ngo MimeUtils.
  • Lungiselela imojuli Isikhiphi Semidiya ukuze ikwazi ukufunda imethadatha ngaleyo fomethi, ukuze iMediaProvider ikwazi ukuyikhomba kahle.
  • Endabeni video/* y audio/*, qhubeka uthembele ku MediaMetadataRetriever ukuze kudalulwe imethadatha efanele.
  • Endabeni image/*yelula noma sebenzisa android.media.ExifInterface ukukhipha nokubuyisela imethadatha ye-EXIF evamile ngisho nakumafomethi ezithombe ezenziwe ngokwezifiso.

Kubalulekile ukuqaphela ukuthi ukuchaza kabusha izandiso noma izinhlobo ze-MIME esezichazwe ku-AOSP akuvunyelwe , ukugwema ukungahambisani noma ukungqubuzana phakathi kwamadivayisi.

Ukukhetha amadivayisi okugcina isitoreji ukuze ubhale

Ama-index e-MediaProvider, ngokuzenzakalelayo, wonke amavolumu abuyiselwe yi- StorageManager.getStorageVolumes() kuphi StorageVolume.getMediaStoreVolumeName() Akuyona into engasebenzi. Kodwa-ke, ama-OEM angakwazi lungisa ukuthi yimaphi amavolumu afakwe ohlwini ukusungula uphawu VolumeInfo.MOUNT_FLAG_INDEXABLE kulawo madivayisi afuna ukuthi avele kulabhulali yemidiya.

Kunconywa ukugwema ukumaka amavolumu esikhashana njenganokuqondiswa — njengamadrayivu athile e-USB OTG avame ukuxhumeka nokunqanyulwa — ukuvimbela ukungahambisani kusizindalwazi noma amaphutha abangelwa ukunyamalala kwevolumu ngokuzumayo.

Ukushintsha Nokwenza Ngokwezifiso I-MTP Stack

I-logic ngemuva kwe-MTP (Media Transfer Protocol), esetshenziselwa ukudlulisa amafayela phakathi kwedivayisi yeselula ne-PC nge-USB , ihlukaniswe nemojuli ye-MediaProvider. Kusukela ngezinguqulo ezithile, i-MTP stack itholakala ngaphandle kwemojuli ngokuphelele futhi iqinisekisiwe ukuthi izosebenza kusetshenziswa ama-API omphakathi nawesistimu kuphela.

Lokhu kuvumela abakhiqizi abadinga izixazululo zokudlulisa ezithile ukuthi bashintshe noma balungise isitaki sabo se-MTP, inqobo nje uma begcina ukuhambisana nezinkontileka ze-MediaStore kanye ne-MediaProvider , ukuze ulwazi lokukopisha nokufunda amafayela kusuka kukhompyutha luhlale lufana.

Amafolda azenzakalelayo kanye nohlu lokukhipha

Uma ivolumu yesitoreji iqala ukusebenza, i-MediaProvider ivame ukudala uchungechunge lwe amafolda ajwayelekile njengoba Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (Le yokugcina ayitholakali kwezinye izinguqulo ezindala).

Kumadivayisi anezidingo ezithile zenhlangano, ama-OEM anganikeza uhlu lwamafolda okufanele akhishwe ngesikhathi sokudalwa kokuqala ngokusebenzisa ukunqwabelana kwezinsiza config_foldersToSkipInDefaultCreationNgakho-ke, isibonelo, zingavimbela amafolda ukuthi adalwe ngokuzenzakalelayo. Notifications/ o Ringtones/ uma sebevele benayo enye indlela yokukhetha.

Ukuncika kwe-MediaProvider kanye Nezidingo Zobuchwepheshe

Izidingo zobuchwepheshe ze-MediaProvider

Uma wenza ngezifiso i-MediaProvider, ama-OEM kumele acabangele inani elithile lokuxhomekeka kobuchwepheshe ukuqinisekisa ukuthi konke kuyaqhubeka nokusebenza kahle:

  • Lapho usebenzisa amafomethi amafayela e-multimedia angewona ajwayelekileIfomethi ngayinye kumele ibhaliswe kuzo zombili MimeUtils njengasemojulini ye- Isikhiphi SemidiyaNgaphandle kwalokho, i-MediaProvider ngeke ikwazi ukuyikhomba noma ukuhlinzeka ngemethadatha ephelele.
  • Ukuqinisekisa ukuthi isethi yamadivayisi okugcina izinto ngokwezifiso (izikhala ze-SD, amachweba e-USB akhelwe ngaphakathi, njll.) afakiwe ohlwini, ukusetshenziswa kwe StorageManagerService Kumelwe umake amavolumu afunekayo nge VolumeInfo.MOUNT_FLAG_INDEXABLE.
  • Uma kusetshenziswa isitaki se-MTP esenziwe ngokwezifiso, kumele sisekelwe kuphela ku- Ama-API omphakathi nawesistimu ukuze ihlale ihambisana ne-MediaStore futhi ingaphazamisi ukuxhumana phakathi kwe-PC kanye nomtapo wezindaba wedivayisi.

Ngaphezu kwalokho, esimweni sokushintsha ikhodi yevidiyo, amadivayisi kumele ahlangabezane nezidingo ezithile ezincane zehadiwe : Ukusekelwa kokufaka ikhodi kwe-HEVC kunikwe amandla kukhamera yomdabu, ukusebenza okwanele kokufunda nokubhala endaweni yokugcina, kanye nama-codec akwazi ukufeza amazinga aphezulu okucubungula emisebenzini yokuguqulwa.

Ukuhlolwa kwe-MediaProvider, ukuxilongwa, kanye namaphutha avamile

Izinkinga ezivamile nge-MediaProvider

Ekusetshenzisweni okuvamile, i-MediaProvider ivame ukunganakwa. Kodwa-ke, njenganoma iyiphi ingxenye yesistimu, ingabhekana nezinkinga: ukuvalwa okungalindelekile , amaphutha lapho kufundwa amafayela athile, ukwehluleka lapho kubuyekezwa imethadatha, noma ukuphahlazeka lapho kuskenwa amavolumu onakele.

Kuhlelo lokusebenza lwe-Android, kunezivivinyo eziningana ezenzakalelayo ukuqinisekisa ukusebenza kwayo okulungile:

  • Ama-CtsProviderTestCases: isethi yokuhlola ye I-Compatibility Test Suite okuqinisekisa ukuziphatha kwama-API omphakathi e-MediaStore ngokumelene ne-MediaProvider.
  • Ukuhlolwa kwe-MediaProvider: izivivinyo zangaphakathi zigxile ekuziphatheni okuthile kwemodyuli kanye nezingxenye zayo.

Abathuthukisi noma ochwepheshe bangasebenzisa lawa ma-test suites ngemiyalo efana nalokhu:

atest --test-mapping packages/providers/MediaProvider

Ezinkundleni zobuchwepheshe, abanye abasebenzisi babike Ukuphahlazeka kwe-MediaProvider okuphindaphindiwe ngenxa yamaphutha enkumbulo (OutOfMemoryError), ikakhulukazi uma kuskenwa amaqoqo amakhulu kakhulu amavidiyo noma kusingathwa ukwahlukaniswa kwamakhadi e-SD owonakele. Kulezi zimo, kuyalulekwa ukuthi:

  • Bheka i- isimo somzimba senkumbulo yangaphakathi neyangaphandle (fometha noma shintsha ikhadi uma linamaphutha).
  • Ukugcina uhlelo kanye amamojula e-Mainline abuyekeziwe kusuka ku-Google Play ukuze uthole izilungiso.
  • Hlola ukuthi kukhona yini uhlelo lokusebenza olukhiqizayo amafayela noma amafayela onakele ane-metadata engavamile ezibangela ukwehluleka kokukhomba.

Amathuluzi nezinsiza ezihlobene ne-MediaProvider

Amathuluzi okubuka amamojula e-Mainline

Uma ufuna ukufunda kabanzi mayelana nendlela i-MediaProvider ebuyekezwa ngayo noma ukuthi yimaphi amamojula e-Mainline owafakile, ungasebenzisa amanye amathuluzi:

  • Isibuyekezi Esiyinhloko: uhlelo lokusebenza olulula olubala uhlu Amamojula e-Mainline akhona kudivayisi yakho Iphinde inikeze izinqamuleli kuphaneli yokubuyekezwa kwesistimu ye-Google Play. Lokhu kuyasiza ekuhloleni ukuthi i-MediaProvider yakho nezinye izingxenye ezibalulekile zisesikhathini.
  • Umphathi Womhlinzeki Wezindaba: imojuli ye-Xposed yomthombo ovulekile evumela Gada futhi unciphise ukusetshenziswa kwe-MediaStore yizinhlelo zokusebenza. Ngayo, abasebenzisi abathuthukile bangabuyekeza ukuthi yiziphi izinhlelo zokusebenza ezenza izicelo eziningi, ukuthi yiziphi izimvume abazisebenzisayo, futhi banciphise nokufinyelela okuthile ukuthuthukisa ubumfihlo.

Lezi zinhlobo zamathuluzi azibalulekile kumsebenzisi ojwayelekile, kodwa zinikeza izinga elengeziwe lokulawula kulabo abafuna ukuphatha ukuziphatha kwe-multimedia kanye nobumfihlo kudivayisi yabo ye-Android ngendlela eyinkimbinkimbi.

I-MediaProvider isibe yingxenye ebalulekile yesistimu ye-Android: ihlela kahle konke okuqukethwe kwe-multimedia, ivikela kangcono ubumfihlo ngesitoreji esinobubanzi, yenza kube lula ukudluliselwa kwekhodi kwamafomethi esimanje, futhi ibuyekeza ngokuzimela ngenxa yamamojula e-Mainline. Ukuqonda ukuthi le ngxenye engabonakali isebenza kanjani kuchaza ukuthi kungani namuhla igalari yakho, izinhlelo zokusebenza zomculo, kanye nezinsizakalo zamafu zisebenza ngokushesha, ngokuqhubekayo, nangokuphephile kakhulu kunasezizukulwaneni zangaphambilini zesistimu.


Engeza njengomthombo okhethwayo ku-Google