package Ġcom . zhihu . mat isse . ui Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . zhihu . mat isse . R Ċ import Ġcom . zhihu . mat isse . internal . entity . Selection Spec Ċ import Ġcom . zhihu . mat isse . internal . ui . adapter . Album Media Adapter . On Photo Capture Ċ import Ġcom . zhihu . mat isse . internal . utils . Media Store Compat Ċ import Ġcom . zhihu . mat isse . internal . utils . Single Media Scanner Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠMain ĠActivity Ġto Ġdisplay Ġalbum s Ġand Ġmedia Ġcontent Ġ( images / videos ) Ġin Ġeach Ġalbum Ċ Ġ* Ġand Ġalso Ġsupport Ġmedia Ġselecting Ġoperations . Ċ Ġ*/ Ċ class ĠCapture Delegate Activity Ġ: ĠAppCompatActivity (), ĠOn Photo Capture Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġspec Ġ= ĠSelection Spec ĊĠĠĠ Ġprivate Ġvar Ġmedia Store Compat : ĠMedia Store Compat ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! spec . has Init ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck ( spec . capture ) Ġ{ Ġ" capture Ġmust Ġset Ġtrue !" Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( spec . capture Strategy Ġ== Ġnull ) Ġthrow ĠRuntimeException (" Don 't Ġforget Ġto Ġset ĠCapture Strategy .") ĊĠĠĠĠĠĠĠ Ġmedia Store Compat Ġ= ĠMedia Store Compat ( this ) ĊĠĠĠĠĠĠĠ Ġmedia Store Compat !!. set Capture Strategy ( spec . capture Strategy ) ĊĠĠĠĠĠĠĠ Ġcapture () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . mat isse _ anim _ empty , ĠR . anim . mat isse _ anim _ empty ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . mat isse _ anim _ empty , ĠR . anim . mat isse _ anim _ empty ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ!= ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠMat isse Activity . REQUEST _ CODE _ CAPTURE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJust Ġpass Ġthe Ġdata Ġback Ġto Ġprevious Ġcalling ĠActivity . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Uri Ġ= Ġmedia Store Compat !!. current Photo Uri !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġmedia Store Compat !!. current Photo Path !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Ġ= Ġarray ListOf ( content Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Path Ġ= Ġarray ListOf ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . put Parcelable ArrayList Extra ( Mat isse Activity . EXTRA _ RESULT _ SELECTION , Ġselected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . putString ArrayList Extra ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMat isse Activity . EXTRA _ RESULT _ SELECTION _ PATH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle Media Scanner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠSingle Media Scanner . Scan Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scan Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Single Media Scanner ", Ġ" scan Ġfinish !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcapture () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Store Compat Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Store Compat !!. dispatch Capture Intent ( this , ĠMat isse Activity . REQUEST _ CODE _ CAPTURE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }