package Ġcom . cr az yle g end . core . abstract s Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . database . Content Observer Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Size Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġcom . cr az yle g end . core . context ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġcr azy Ġon Ġ 5 / 1 4 / 2 0 Ġto Ġlong Ġlive Ġand Ġpro sper Ġ! Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract AV M ( application : ĠApplication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġstate Handle : ĠSaved State Handle ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCAN _ LOAD _ KEY Ġ= Ġ" can Load " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġval Ġcontent Resolver Ġget () Ġ= Ġcontext . content Resolver ĊĠĠĠ Ġprotected Ġvar Ġcontent Observer : ĠContent Observer ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġval Ġloading Indicator Data Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġloading Indicator : ĠLive Data < Boolean > Ġ= Ġloading Indicator Data ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUsing Ġthis Ġinstead Ġof Ġevent Ġsince Ġit Ġserves Ġthe Ġsame Ġpurpose Ġthus Ġit 's Ġneeded Ġhere ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġval Ġcan Load Ġget () Ġ= Ġstate Handle [ CAN _ LOAD _ KEY ] Ġ?: Ġtrue ĊĊĠĠĠ Ġprotected Ġfun Ġset Can Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Handle [ CAN _ LOAD _ KEY ] Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Can Not Load () Ġ{ ĊĠĠĠĠĠĠĠ Ġstate Handle [ CAN _ LOAD _ KEY ] Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcontent Observer ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . unregister Content Observer ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOr Ġjust Ġuse ĠG lide Ġwith Ġthe Ġcontent Uri ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent Resolver ĠContent Resolver ĊĠĠĠĠ Ġ* Ġ@ param Ġcustom Size ĠSize ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions ĠOptions ? ĊĠĠĠĠ Ġ* Ġ@ return ĠBitmap ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġfun Ġload Thumbnail ( content Resolver : ĠContent Resolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Uri : ĠUri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Size : ĠSize Ġ= ĠSize ( 3 5 0 , Ġ 3 5 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlegacy Kind : ĠInt Ġ= ĠMedia Store . Video . Thumb nails . MICRO _ KIND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions : ĠBitmap Factory . Options ? Ġ= Ġnull ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver . load Thumbnail ( content Uri , Ġcustom Size , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Thumb nails . get Thumbnail ( content Resolver , Ġid , Ġlegacy Kind , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ?: ĠBitmap Factory . Options ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtry OrNull ( function : Ġ() Ġ-> ĠBitmap ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }