package Ġorg . xf ort . rock . image picker Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroidx . core . database . getInt OrNull Ċ import Ġandroidx . core . database . getLong OrNull Ċ import Ġandroidx . core . database . getString OrNull Ċ Ċ /** Ċ Ġ** ĠCreated Ġby ĠZ hang H ua X in Ġon Ġ 2 0 2 1 / 5 / 1 0 . Ċ Ġ* Ċ Ġ**/ Ċ data Ġclass ĠMedia Item ( ĊĠĠĠ Ġval Ġid : ĠLong , ĊĠĠĠ Ġvar ĠmimeType : ĠString , ĊĠĠĠ Ġval Ġsize : ĠLong , ĊĠĠĠ Ġval Ġwidth : ĠInt , ĊĠĠĠ Ġval Ġheight : ĠInt , ĊĠĠĠ Ġval Ġtime : ĠLong , ĊĠĠĠ Ġvar Ġname : ĠString , Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġvar Ġcontent Uri : ĠUri ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠmimeType . startsWith (" image ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠmimeType . startsWith (" video ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . EXTERNAL _ CONTENT _ URI ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Files . getContent Uri ( Media Store . VOLUME _ EXTERNAL ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġapp Adapter Position : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġconstructor ( parcel : ĠParcel ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġparcel . read Long (), ĊĠĠĠĠĠĠĠ Ġparcel . readString () Ġ?: Ġ"", ĊĠĠĠĠĠĠĠ Ġparcel . read Long (), ĊĠĠĠĠĠĠĠ Ġparcel . readInt (), ĊĠĠĠĠĠĠĠ Ġparcel . readInt (), ĊĠĠĠĠĠĠĠ Ġparcel . read Long (), ĊĠĠĠĠĠĠĠ Ġparcel . readString () Ġ?: Ġ"" ĊĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġcontent Uri Ġ= Ġparcel . read Parcelable ( Uri :: class . java . class Loader ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Uri Ġ= ĠUri Utils . content Uri ( id , ĠmimeType ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( content Uri . toString () Ġ+ Ġid . toString ()). hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel ?, Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdest ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . write Long ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . writeString ( mime Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . write Long ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . writeInt ( width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . writeInt ( height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . write Long ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . writeString ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠhashCode () Ġ== Ġother . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĠCRE ATOR Ġ: ĠParcel able . Creator < Media Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( parcel : ĠParcel ): ĠMedia Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMedia Item ( parcel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Media Item ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Cursor ( cursor : ĠCursor ?, Ġcolumns Index : ĠInt Array ): ĠMedia Item ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġorigin Ġ= Ġit . getInt OrNull ( columns Index [ 7 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġit . getInt OrNull ( columns Index [ 3 ]) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġheight Ġ= Ġit . getInt OrNull ( columns Index [ 4 ]) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( width Ġ> Ġ 0 Ġ&& Ġheight Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( origin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 , Ġ 2 7 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġwidth . xor ( height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġwidth . xor ( height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġwidth . xor ( height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Ġ= ĠMedia Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getLong OrNull ( columns Index [ 0 ]) Ġ?: Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString OrNull ( columns Index [ 1 ]) Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getLong OrNull ( columns Index [ 2 ]) Ġ?: Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getLong OrNull ( columns Index [ 5 ]) Ġ?: Ġ- 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . getString OrNull ( columns Index [ 6 ]) Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . mime Type . contains (" gif ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Media Item ", Ġitem . toString () Ġ+ Ġ"_" Ġ+ Ġorigin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ