package Ġcom . sh en jun . c org i extension . player . ijk Ċ Ċ import Ġandroid . content . res . Asset FileDescriptor Ċ import Ġtv . dan mak u . ijk . media . player . misc . IM edia DataSource Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsh en jun Ġon Ġ 2 0 1 9 - 0 8 - 2 3 . Ċ Ġ*/ Ċ class ĠI jk Assets DataSource ( private Ġval Ġa fd : ĠAsset FileDescriptor ) Ġ: ĠI Media DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Media Bytes : ĠByteArray Ġ= Ġa fd . create InputStream (). read Bytes () ĊĊĠĠĠ Ġoverride Ġfun Ġread At ( position : ĠLong , Ġbuffer : ĠByteArray , Ġoffset : ĠInt , Ġsize : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ+ Ġ 1 Ġ>= Ġm Media Bytes . size Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ+ Ġsize Ġ< Ġm Media Bytes . size Ġ-> Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmin (( m Media Bytes . size Ġ- Ġposition ). toInt (), Ġbuffer . size ) Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( length Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( m Media Bytes , Ġposition . toInt (), Ġbuffer , Ġoffset , Ġlength ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlength ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Size (): ĠLong Ġ= Ġa fd . length ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ= Ġa fd . close () Ċ }