package Ġcom . h ong y ue . app . m use Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . Simple Item Animator Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . Toast Ċ import Ġcom . h ong y ue . app . camera . Camera Activity Ċ import Ġcom . h ong y ue . app . camera . Camera Constant Ċ import Ġcom . h ong y ue . app . m use . Ph o enix Option . THEME _ DEFAULT Ċ import Ġcom . h ong y ue . app . m use . adapter . Picker Adapter Ċ import Ġcom . h ong y ue . app . m use . adapter . Picker Album Adapter Ċ import Ġcom . h ong y ue . app . m use . loader . Media Loader Ċ import Ġcom . h ong y ue . app . m use . model . Media Entity Ċ import Ġcom . h ong y ue . app . m use . model . Media Folder Ċ import Ġcom . h ong y ue . app . m use . model . MimeType Ċ import Ġcom . h ong y ue . app . m use . utils . Screen Util Ċ import Ġcom . h ong y ue . app . m use . utils . StringUtils Ċ import Ġcom . h ong y ue . app . m use . widget . Folder Pop Window Ċ import Ġcom . h ong y ue . app . m use . widget . Grid Spacing Item Decoration Ċ import Ġkotlinx . android . synt hetic . main . activity _ picker .* Ċ import Ġkotlinx . android . synt hetic . main . include _ title _ bar .* Ċ import Ġjava . util .* Ċ Ċ class ĠP icker Activity Ġ: ĠBase M use Activity () Ġ, ĠP icker Adapter . On Pick Changed Listener , ĠView . OnClickListener , ĠP icker Album Adapter . On ItemClickListener { ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠP icker Activity :: class . java . simple Name ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpick Adapter : ĠP icker Adapter ĊĠĠĠ Ġprivate Ġvar Ġall Media List : ĠMutable List < Media Entity > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġall Folder List : ĠMutable List < Media Folder > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġvar Ġis Animation Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfolder Window : ĠFolder Pop Window ĊĠĠĠ Ġprivate Ġvar Ġanimation : ĠAnimation ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Loader : ĠMedia Loader ĊĠĠĠ Ġprivate Ġval ĠREQUEST _ CODE Ġ= Ġ 0 x 0 0 0 0 0 2 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ picker ) ĊĠĠĠĠĠĠĠ Ġoption Ġ= Ġintent . get Parcelable Extra (" option ") ĊĊĊĠĠĠĠĠĠĠ Ġrequire Permission () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġrequire Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ> Ġ 1 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . CAMERA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . RECORD _ AUDIO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermissions To Request Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġpermissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , Ġpermission ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions To Request . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! permissions To Request . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions To Request . to Typed Array (), ĠCamera Constant . REQUEST _ CODE _ CAMERA _ PERMISSION S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠĠĠĠĠ Ġif Ġ( grant Results . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . CAMERA ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġinit View (){ ĊĊĠĠĠĠĠĠĠ Ġsetup Config () ĊĠĠĠĠĠĠĠ Ġsetup View () ĊĠĠĠĠĠĠĠ Ġsetup Data () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinit Ġviews ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup View () Ġ{ ĊĠĠĠĠĠĠĠ Ġpick Rl Title . set BackgroundColor ( theme Color ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( theme Color Ġ== ĠTHE ME _ DEFAULT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrl _ bottom . set BackgroundColor ( theme Color ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrl _ bottom . set BackgroundColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Preview . setTextColor ( theme Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Ll Ok . background Ġ= Ġt int Drawable ( R . drawable . phoenix _ shape _ complete _ background , Ġtheme Color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis Number Complete () ĊĠĠĠĠĠĠĠ Ġpick Tv Title . text Ġ= Ġif Ġ( fileType Ġ== ĠMime Type . of Audio ()) ĠgetString ( R . string . picture _ all _ audio ) Ġelse ĠgetString ( R . string . picture _ camera _ roll ) ĊĠĠĠĠĠĠĠ Ġpick _ tv _ empty . text Ġ= Ġif Ġ( fileType Ġ== ĠMime Type . of Audio ()) ĠgetString ( R . string . picture _ audio _ empty ) Ġelse ĠgetString ( R . string . picture _ empty ) ĊĠĠĠĠĠĠĠ ĠStringUtils . temp Text Font ( pick _ tv _ empty , ĠfileType ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Text Ġ= Ġpick Tv Title . getText (). toString (). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Camera ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Camera Ġ= ĠStringUtils . is Camera ( title Text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfolder Window Ġ= ĠFolder Pop Window ( this , ĠfileType ) ĊĠĠĠĠĠĠĠ Ġfolder Window . set Picture Title View ( pick Tv Title ) ĊĠĠĠĠĠĠĠ Ġfolder Window . setOn ItemClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġpick Tv Preview . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġpick Tv Back . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġpick Tv Cancel . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġpick Ll Ok . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġpick Tv Title . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġpick RecyclerView . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġpick RecyclerView . addItem Decoration ( Grid Spacing Item Decoration ( span Count , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScreen Util . dip 2 px ( this , Ġ 2 f ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpick RecyclerView . layout Manager Ġ= ĠGrid LayoutManager ( this , Ġspan Count ) Ġas ĠRecyclerView . LayoutManager ? ĊĠĠĠĠĠĠĠ Ġ( pick RecyclerView . item Animator Ġas ĠSimple Item Animator ). supports Change Animations Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġpick Adapter Ġ= ĠP icker Adapter ( mContext , Ġoption ) ĊĠĠĠĠĠĠĠ Ġpick RecyclerView . adapter Ġ= Ġpick Adapter ĊĠĠĠĠĠĠĠ Ġpick Adapter . setOn Pick Changed Listener ( this ) ĊĠĠĠĠĠĠĠ Ġpick Adapter . set Pick Media List ( media List ) ĊĠĠĠĠĠĠĠ Ġchange Image Number ( media List ) ĊĊĠĠĠĠĠĠĠ Ġmedia Loader Ġ= ĠMedia Loader ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Gif , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Filter Time . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Filter Size ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġread Local Media () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnone Ġnumber Ġstyle ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" String Format Matches ") ĊĠĠĠ Ġprivate Ġfun Ġis Number Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġpick Tv Ok . text Ġ= ĠgetString ( R . string . picture _ please _ select ) ĊĠĠĠĠĠĠĠ Ġanimation Ġ= ĠAnimation Utils . load Animation ( this , ĠR . anim . phoenix _ window _ in ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget ĠMedia Entity Ġs ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġread Local Media () Ġ{ ĊĠĠĠĠĠĠĠ Ġmedia Loader . load All Media ( object Ġ: ĠMedia Loader . Local Media Load Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload Complete ( folders : ĠMutable List < Media Folder >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( folders . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Folder List Ġ= Ġfolders ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfolder Ġ= Ġfolders [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Img Ġ= Ġfolder . images ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¿ĻéĩĮ è§£åĨ³ æľī äºĽ æľº åŀĭ ä¼ļ åĩºçİ° æĭ į çħ§ å®Į ï¼Į çĽ¸ åĨĮ åĪĹè¡¨ ä¸į åıĬ æĹ¶ åĪ·æĸ° éĹ®é¢ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĽłä¸º on Activity Result éĩĮ æīĭåĬ¨ æ·»åĬł æĭ į çħ§ åĲİçļĦ çħ§ çīĩ ï¼Į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ æŁ¥è¯¢ åĩº æĿ¥çļĦ åĽ¾çīĩ å¤§äºİ æĪĸ çŃīäºİ å½ĵåīį adapter éĽĨåĲĪ çļĦ åĽ¾çīĩ åĪĻ åıĸ æĽ´æĸ° åĲİçļĦ ï¼Į åĲ¦åĪĻ å°± åıĸ æľ¬åľ° çļĦ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( local Img . size Ġ>= Ġall Media List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Media List Ġ= Ġlocal Img ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Window . bind Folder ( folders ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pick Adapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Media List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Media List Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick Adapter . set All Media List ( all Media List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick _ tv _ empty . visibility Ġ= Ġif Ġ( all Media List . size Ġ> Ġ 0 ) ĠView . IN VISIBLE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" String Format Matches ") ĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġv . id ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . pick Tv Back Ġ|| Ġid Ġ== ĠR . id . pick Tv Cancel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( folder Window . is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Window . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . pick Tv Title ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( folder Window . is Showing ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Window . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Media List . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Window . show As DropDown ( pick Rl Title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġselected Images Ġ= Ġpick Adapter . get Pick Media List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfolder Window . notify Data Checked Status ( selected Images ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . pick Tv Preview ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpicked Images Ġ= Ġpick Adapter . get Pick Media List () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠNavigator . show Preview View ( this , Ġoption , Ġpicked Images , Ġpicked Images , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . pick Ll Ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages Ġ= Ġpick Adapter . get Pick Media List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpicture Type Ġ= Ġif Ġ( images . size Ġ> Ġ 0 ) Ġimages [ 0 ]. mime Type Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġimages . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeq Img Ġ= Ġ! TextUtils . isEmpty ( picture Type ) Ġ&& Ġpicture Type . startsWith ( com . h ong y ue . app . m use . Ph o enix Constant . IMAGE ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ è®¾ç½® äºĨ åĽ¾çīĩ æľĢå°ı éĢīæĭ© æķ°éĩı ï¼Į åĪĻ åĪ¤æĸŃ æĺ¯åĲ¦ æ»¡è¶³ æĿ¡ä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Select Num Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġmin Select Num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" String Format Matches ") Ġval Ġstr Ġ= Ġif Ġ( eq Img ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . picture _ min _ img _ num , Ġmin Select Num ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . phoenix _ message _ min _ number , Ġmin Select Num ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( str ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Media ( images ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE Ġ&& ĠresultCode Ġ== Ġ 1 0 1 ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= Ġdata ?. getString Extra (" path ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġdata ?. getInt Extra (" type ", Ġ- 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽ¾åĥı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Entity Ġ= ĠMedia Entity . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. local Path ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fileType ( MimeType . of Image ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. mime Type ( MimeType . create ImageType ( filePath )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Media List . add ( 0 , media Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽ¾åĥı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Entity Ġ= ĠMedia Entity . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. local Path ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fileType ( MimeType . of Image ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. mime Type ( MimeType . create ImageType ( filePath )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Media List . add ( 0 , media Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( folder Name : ĠString , Ġimages : ĠMutable List < Media Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpick Tv Title . text Ġ= Ġfolder Name ĊĠĠĠĠĠĠĠ Ġpick Adapter . set All Media List ( images ) ĊĠĠĠĠĠĠĠ Ġfolder Window . dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Take Photo () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Camera () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonChange ( select Images : ĠList < Media Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange Image Number ( select Images ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Picture Click ( media Entity : ĠMedia Entity , Ġposition : ĠInt ) Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠNavigator . show Preview View ( this , Ġoption , Ġpick Adapter . getAll Media List (), Ġpick Adapter . get Pick Media List (), Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġchange Ġimage Ġselector Ġstate ĊĊĠĠĠĠ Ġ* Ġ@ param Ġselect Images ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" String Format Matches ") ĊĠĠĠ Ġprivate Ġfun Ġchange Image Number ( select Images : ĠList < Media Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenable Ġ= Ġselect Images . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġif Ġ( enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Ll Ok . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Ll Ok . alpha Ġ= Ġ 1 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Preview . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Preview . setTextColor ( if Ġ( theme Color Ġ== ĠTHE ME _ DEFAULT ) ĠContext Compat . getColor ( mContext , ĠR . color . green ) Ġelse Ġtheme Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Animation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Number . start Animation ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Number . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Number . text Ġ= ĠString . format (" (% d )", Ġselect Images . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Ok . text Ġ= ĠgetString ( R . string . picture _ completed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Animation Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Ll Ok . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Ll Ok . alpha Ġ= Ġ 0 . 7 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Preview . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Preview . setTextColor ( Context Compat . getColor ( mContext , ĠR . color . color _ gray _ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Number . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpick Tv Ok . text Ġ= ĠgetString ( R . string . picture _ please _ select ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġclose Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġanimation ?. cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Camera () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġ Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . set Class ( mContext , ĠCamera Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra (" enable Record ", Ġoption . is Record Enable ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 0 x 0 0 0 0 0 2 ) ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( R . anim . phoenix _ activity _ in , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart Action ( mContext : ĠContext , Ġoption : ĠP ho enix Option ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" option ", Ġoption ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . set Class ( mContext , ĠP icker Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ