package Ġorg . read ium . navigator . media 2 Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroidx . media 2 . common . Media Metadata Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Deferred Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . async Ċ import Ġorg . read ium . r 2 . shared . publication . Publication Ċ import Ġorg . read ium . r 2 . shared . publication . services . cover Ċ Ċ @ Experimental Media 2 Ċ internal Ġclass ĠDefault Metadata Factory ( private Ġval Ġpublication : ĠPublic ation ): ĠMedia Metadata Factory Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Ġ= ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Default ) ĊĊĠĠĠ Ġprivate Ġval Ġauthors : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpublication . metadata . authors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", Ġ") Ġ{ Ġit . name Ġ}. take If Ġ{ Ġit . isNotBlank () Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcover : ĠDeferred < Bitmap ?> Ġ= Ġcoroutine Scope . async Ġ{ ĊĠĠĠĠĠĠĠ Ġpublication . cover () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġpublication Metadata (): ĠMedia Metadata Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠMedia Metadata . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( Media Metadata . METADATA _ KEY _ TITLE , Ġpublication . metadata . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( Media Metadata . METADATA _ KEY _ AL BU M , Ġpublication . metadata . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Long ( Media Metadata . METADATA _ KEY _ NUM _ TRACK S , Ġpublication . reading Order . size . to Long ()) ĊĊĠĠĠĠĠĠĠ Ġauthors ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ AUTHOR , Ġ Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ AR TI ST , Ġ Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpublication . metadata . duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġbuilder . put Long ( Media Metadata . METADATA _ KEY _ DURATION , Ġit . to Long () Ġ* Ġ 1 0 0 0 ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġcover . await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġbuilder . put Bitmap ( Media Metadata . METADATA _ KEY _ ART , Ġit )} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġresource Metadata ( index : ĠInt ): ĠMedia Metadata Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSee Ġthe Ġimplementation Ġfor Ġhow Ġeach Ġmetadata Ġis Ġused Ġin Ġmedia 2 : ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// cs . android . com / android x / platform / frameworks / support / +/ android x - main : media 2 / media 2 - session / src / main / java / android x / media 2 / session / Media Notification Handler . java ; l = 1 7 5 ? q = Media Notification Handler ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠMedia Metadata . Builder () ĊĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġpublication . reading Order [ index ] ĊĠĠĠĠĠĠĠ Ġbuilder . put Long ( Media Metadata . METADATA _ KEY _ TRACK _ NUMBER , Ġindex . to Long ()) ĊĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ MEDIA _ URI , Ġlink . href ) ĊĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ TITLE , Ġlink . title ) ĊĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ DISPLAY _ SUB TITLE , Ġpublication . metadata . title ) ĊĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ AL BU M , Ġpublication . metadata . title ) ĊĠĠĠĠĠĠĠ Ġbuilder . put Long ( Media Metadata . METADATA _ KEY _ DURATION , Ġ( link . duration ?. to Long () Ġ?: Ġ 0 ) Ġ* Ġ 1 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġauthors ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ AR TI ST , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . putString ( Media Metadata . METADATA _ KEY _ AUTHOR , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcover . await ()?. let Ġ{ Ġbuilder . put Bitmap ( Media Metadata . METADATA _ KEY _ ART , Ġit )} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} Ċ }