package Ġcom . sup . dev . android . utils Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . media . Media Metadata Retriever Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . sup . dev . android . tools . Tools Bitmap Ċ import Ġcom . sup . dev . java . libs . debug . info Ċ Ċ class ĠUtils Metadata ( var Ġretrie ver : ĠMedia Metadata Retriever ? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠ Ġconstructor Ġ( path : ĠString ) Ġ: Ġthis ( wrap ( path )) ĊĊĠĠĠ Ġfun Ġparse ( path : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġretrie ver Ġ= Ġwrap ( path ) ĊĊĠĠĠĠĠĠĠ Ġinfo (" get Embedded Picture ", Ġretrie ver . get Embedded Picture ()) ĊĠĠĠĠĠĠĠ Ġinfo (" get Frame At Time ", Ġretrie ver . get Frame At Time ()) ĊĠĠĠĠĠĠĠ Ġinfo (" CD _ TRACK _ NUMBER ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ CD _ TRACK _ NUMBER )) ĊĠĠĠĠĠĠĠ Ġinfo (" AL BU M ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ AL BU M )) ĊĠĠĠĠĠĠĠ Ġinfo (" AR TI ST ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ AR TI ST )) ĊĠĠĠĠĠĠĠ Ġinfo (" AUTHOR ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ AUTHOR )) ĊĠĠĠĠĠĠĠ Ġinfo (" COMP O SER ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ COMP O SER )) ĊĠĠĠĠĠĠĠ Ġinfo (" DATE ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ DATE )) ĊĠĠĠĠĠĠĠ Ġinfo (" GEN RE ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ GEN RE )) ĊĠĠĠĠĠĠĠ Ġinfo (" TITLE ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ TITLE )) ĊĠĠĠĠĠĠĠ Ġinfo (" YEAR ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ YEAR )) ĊĠĠĠĠĠĠĠ Ġinfo (" DURATION ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ DURATION )) ĊĠĠĠĠĠĠĠ Ġinfo (" NUM _ TRACK S ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ NUM _ TRACK S )) ĊĠĠĠĠĠĠĠ Ġinfo (" WR ITER ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ WR ITER )) ĊĠĠĠĠĠĠĠ Ġinfo (" MIME TYPE ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ MIME TYPE )) ĊĠĠĠĠĠĠĠ Ġinfo (" AL BU MAR TI ST ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ AL BU MAR TI ST )) ĊĠĠĠĠĠĠĠ Ġinfo (" DIS C _ NUMBER ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ DIS C _ NUMBER )) ĊĠĠĠĠĠĠĠ Ġinfo (" COMPI L ATION ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ COMPI L ATION )) ĊĠĠĠĠĠĠĠ Ġinfo (" HAS _ AUDIO ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ HAS _ AUDIO )) ĊĠĠĠĠĠĠĠ Ġinfo (" HAS _ VIDEO ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ HAS _ VIDEO )) ĊĠĠĠĠĠĠĠ Ġinfo (" VIDEO _ WIDTH ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ WIDTH )) ĊĠĠĠĠĠĠĠ Ġinfo (" VIDEO _ HEIGHT ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ HEIGHT )) ĊĠĠĠĠĠĠĠ Ġinfo (" BIT RATE ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ BIT RATE )) ĊĠĠĠĠĠĠĠ Ġinfo (" LOCATION ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ LOCATION )) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" VIDEO _ ROT ATION ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ ROT ATION )) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" CAPTURE _ FR AM ER ATE ", Ġretrie ver . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ CAPTURE _ FR AM ER ATE )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠInit ed ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġfun Ġget Preview (): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġembedded Picture Ġ= Ġretrie ver !!. get Embedded Picture () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( embedded Picture Ġ!= Ġnull ) ĠTools Bitmap . decode ( embedded Picture ) Ġelse Ġretrie ver !!. get Frame At Time () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Video Width (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( retrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ WIDTH )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Video Height (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( retrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ HEIGHT )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Duration Ms (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( retrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ DURATION )? :" 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Track Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( retrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ CD _ TRACK _ NUMBER )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget MimeType (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ MIME TYPE ) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Audio (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ HAS _ AUDIO )?. toLowerCase () Ġ== Ġ" yes " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Video (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ HAS _ VIDEO )?. toLowerCase () Ġ== Ġ" yes " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) ĊĠĠĠ Ġfun Ġget Video Rotation (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) ĠInteger . parseInt ( retrie ver !!. extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ ROT ATION )) Ġelse Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠStatic ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġwrap ( path : ĠString ): ĠMedia Metadata Retriever Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrie ver Ġ= ĠMedia Metadata Retriever () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrie ver . set DataSource ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretrie ver ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Preview ( path : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrie ver Ġ= Ġwrap ( path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġembedded Picture Ġ= Ġretrie ver . embedded Picture ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( embedded Picture Ġ!= Ġnull ) ĠTools Bitmap . decode ( embedded Picture ) Ġelse Ġretrie ver . frame At Time ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Video Width ( path : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( wrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ WIDTH )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Video Height ( path : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( wrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ HEIGHT )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Duration Ms ( path : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( wrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ DURATION )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Track Count ( path : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . parseInt ( wrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ CD _ TRACK _ NUMBER )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget MimeType ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ MIME TYPE ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Audio ( path : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ HAS _ AUDIO )?. toLowerCase () Ġ== Ġ" yes " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Video ( path : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ HAS _ VIDEO )?. toLowerCase () Ġ== Ġ" yes " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( api Ġ= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) ĊĠĠĠĠĠĠĠ Ġfun Ġget Video Rotation ( path : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) ĠInteger . parseInt ( wrap ( path ). extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ VIDEO _ ROT ATION )) Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ