package Ġcom . rer ere . iw ara 4 a . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . google . android . ex op layer 2 . database . Standalone Database Provider Ċ import Ġcom . google . android . ex op layer 2 . ext . okhttp . Ok Http DataSource Ċ import Ġcom . google . android . ex op layer 2 . upstream . DataSource Ċ import Ġcom . google . android . ex op layer 2 . upstream . cache . Cache DataSource Ċ import Ġcom . google . android . ex op layer 2 . upstream . cache . Least Recent ly Used Cache Ev ictor Ċ import Ġcom . google . android . ex op layer 2 . upstream . cache . Simple Cache Ċ import Ġcom . rer ere . iw ara 4 a . util . okhttp . Smart Dns Ċ import Ġcom . rer ere . iw ara 4 a . util . okhttp . UserAgent Interceptor Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġjava . io . File Ċ Ċ object ĠVideo Cache Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ SIZE Ġ= Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 Ġ* Ġ 5 1 2 L Ġ// Ġ 5 1 2 ĠM ĊĊĠĠĠ Ġprivate Ġvar Ġvideo Cache : ĠDataSource . Factory ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget Cache ( context : ĠContext ): ĠDataSource . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( video Cache Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= ĠFile ( context . cacheDir , Ġ" exo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Ġ= ĠSimple Cache ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLe ast Recent ly Used Cache Ev ictor ( MAX _ SIZE ), Ġ// ĠL RU Ġ ç¼ĵåŃĺ ç®Ĺæ³ķ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStand alone Database Provider ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Cache Ġ= ĠCache DataSource . Factory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cache ( cache ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setUp stream DataSource Factory ( Ok Http DataSource . Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dns ( Smart Dns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. retry On Connection Failure ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( UserAgent Interceptor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set CacheKey Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . key Ġ?: Ġit . uri . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring After (" file =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. substring Before ("& ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvideo Cache !! ĊĠĠĠ Ġ} Ċ }