package Ġcom . l zx . music lib ĊĊ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . media . session . Playback State Compat Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġcom . l zx . st arr ys ky . manager . Media Session Connection Ċ import Ġcom . l zx . st arr ys ky . manager . Music Manager Ċ import Ġcom . l zx . st arr ys ky . manager . On Player EventListener Ċ import Ġcom . l zx . st arr ys ky . model . Song Info Ċ import Ġcom . l zx . st arr ys ky . playback . download . Exo Download Ċ import Ġcom . l zx . st arr ys ky . utils . Timer Task Manager Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġkotlin çīĪ Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠOn Player EventListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Favorite Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Checked Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Timer Task : ĠTimer Task Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurr Info : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurr Time : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Seek Bar : ĠSeek Bar ĊĊĠĠĠ Ġprivate Ġvar Ġm Media Session Connection : ĠMedia Session Connection ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġcurr Info Ġ= ĠfindViewById ( R . id . curr Info ) ĊĠĠĠĠĠĠĠ Ġcurr Time Ġ= ĠfindViewById ( R . id . curr Time ) ĊĠĠĠĠĠĠĠ Ġm Seek Bar Ġ= ĠfindViewById ( R . id . seek Bar ) ĊĊĠĠĠĠĠĠĠ Ġm Timer Task Ġ= ĠTimer Task Manager () ĊĠĠĠĠĠĠĠ Ġm Media Session Connection Ġ= ĠMedia Session Connection . instance ĊĊĠĠĠĠĠĠĠ Ġval Ġs 1 Ġ= ĠSong Info () ĊĠĠĠĠĠĠĠ Ġs 1 . song Id Ġ= Ġ" 1 1 1 " ĊĠĠĠĠĠĠĠ Ġs 1 . song Url Ġ= Ġ" http :// music . 1 6 3 . com / song / media / outer / url ? id = 3 1 7 1 5 1 . mp 3 & a = æĪĳ " ĊĠĠĠĠĠĠĠ Ġs 1 . song Cover Ġ= Ġ" https :// www . qq kw . com / d / file / p / 2 0 1 8 / 0 4 - 2 1 / c 2 4 fd 8 6 0 0 6 6 7 0 f 9 6 4 e 6 3 cb 8 f 9 c 1 2 9 fc 6 . jpg " ĊĠĠĠĠĠĠĠ Ġs 1 . song Name Ġ= Ġ" å¿ĥ éĽ ¨ " ĊĠĠĠĠĠĠĠ Ġs 1 . artist Ġ= Ġ" è´ ¤ åĵ ¥ " ĊĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= ĠSong Info () ĊĠĠĠĠĠĠĠ Ġs 2 . song Id Ġ= Ġ" 2 2 2 " ĊĠĠĠĠĠĠĠ Ġs 2 . song Url Ġ= Ġ" http :// music . 1 6 3 . com / song / media / outer / url ? id = 2 8 1 9 5 1 . mp 3 " ĊĠĠĠĠĠĠĠ Ġs 2 . song Cover Ġ= Ġ" https :// n . s ina img . cn / sin ac n 1 3 / 4 4 8 / w 1 0 2 4 h 1 0 2 4 / 2 0 1 8 0 5 0 4 / 7 b 5 f - f zy qq iq 8 2 2 8 3 0 5 . jpg " ĊĠĠĠĠĠĠĠ Ġs 2 . song Name Ġ= Ġ" æĪĳ æĽ ¾ çĶ¨ å¿ĥ çĪ± çĿĢ ä½ł " ĊĠĠĠĠĠĠĠ Ġs 2 . artist Ġ= Ġ" æ½ ĺ ç¾İ è¾ ° " ĊĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= ĠSong Info () ĊĠĠĠĠĠĠĠ Ġs 3 . song Id Ġ= Ġ" 3 3 3 " ĊĠĠĠĠĠĠĠ Ġs 3 . song Url Ġ= Ġ" http :// music . 1 6 3 . com / song / media / outer / url ? id = 2 5 9 0 6 1 2 4 . mp 3 " ĊĠĠĠĠĠĠĠ Ġs 3 . song Cover Ġ= Ġ" http :// cn . ch in ad aily . com . cn / img / att ache ment / jpg / site 1 / 2 0 1 8 0 2 1 1 / 5 0 9 a 4 c 2 df 4 1 d 1 bea 4 5 f 7 3 b . jpg " ĊĠĠĠĠĠĠĠ Ġs 3 . song Name Ġ= Ġ" ä¸įè¦ģ è¯´ è¯Ŀ " ĊĠĠĠĠĠĠĠ Ġs 3 . artist Ġ= Ġ" éĻĪ å¥ ķ è¿ ħ " ĊĊĠĠĠĠĠĠĠ Ġval Ġsong Infos Ġ= ĠArrayList < Song Info >() ĊĠĠĠĠĠĠĠ Ġsong Infos . add ( s 1 ) ĊĠĠĠĠĠĠĠ Ġsong Infos . add ( s 2 ) ĊĠĠĠĠĠĠĠ Ġsong Infos . add ( s 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . play ). setOnClickListener Ġ{ ĠMusic Manager . instance . play Music ( song Infos , Ġ 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ// æļĤ åģľ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . pause ). setOnClickListener Ġ{ ĠMusic Manager . instance . pause Music () Ġ} ĊĠĠĠĠĠĠĠ Ġ// æģ ¢å¤į æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . res um ). setOnClickListener Ġ{ ĠMusic Manager . instance . play Music () Ġ} ĊĠĠĠĠĠĠĠ Ġ// åģľæŃ¢ æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . stop ). setOnClickListener Ġ{ ĠMusic Manager . instance . stop Music () Ġ} ĊĠĠĠĠĠĠĠ Ġ// ä¸ĭ ä¸Ģ é¦ĸ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . pre ). setOnClickListener Ġ{ ĠMusic Manager . instance . skip To Previous () Ġ} ĊĠĠĠĠĠĠĠ Ġ// ä¸Ĭ ä¸Ģ é¦ĸ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . next ). setOnClickListener Ġ{ ĠMusic Manager . instance . skip To Next () Ġ} ĊĠĠĠĠĠĠĠ Ġ// å¿« è¿Ľ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . fast Forward ). setOnClickListener Ġ{ ĠMusic Manager . instance . fast Forward () Ġ} ĊĠĠĠĠĠĠĠ Ġ// å¿« éĢĢ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . rewind ). setOnClickListener Ġ{ ĠMusic Manager . instance . rewind () Ġ} ĊĠĠĠĠĠĠĠ Ġ// å½ĵåīį æŃĮ æĽ² ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . curr Song ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Info Ġ= ĠMusic Manager . instance . now Playing Song Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( song Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" song Info Ġis Ġnull ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" curr ĠSong Info Ġ= Ġ" Ġ+ Ġsong Info . song Id !! , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// å½ĵåīį æŃĮ æĽ² id ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . curr Song Id ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsong Id Ġ= ĠMusic Manager . instance . now Playing Song Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( song Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" song Id Ġis Ġnull ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" song Id Ġ= Ġ$ song Id ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// å½ĵåīį æŃĮ æĽ² ä¸ĭ æłĩ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . curr Song Index ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠMusic Manager . instance . now Playing Index ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" index Ġ= Ġ$ index ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ æłı åĸľ æ¬¢ æĮīéĴ® ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . send Favorite ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . update Favorite UI ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Favorite Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . update Favorite UI ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Favorite Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ æłı æŃĮ è¯į æĮīéĴ® ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . send L yr ics ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . update L yr ics UI ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . update L yr ics UI ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ç¼ĵåŃĺ å¤§å°ı ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . cache Size ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠEx o Download . instance . cached Size . toString () Ġ+ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" å¤§å°ı ï¼ļ $ size ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æĺ¯åĲ¦ éļıæľº æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . shuffle Mode ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepeat Mode Ġ= ĠMusic Manager . instance . shuffle Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . SH UFF LE _ MODE _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" è®¾ç½®ä¸º éļıæľº æĴŃæĶ¾ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . shuffle Mode Ġ= ĠPlay back State Compat . SH UFF LE _ MODE _ ALL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" è®¾ç½®ä¸º é¡ºåºı æĴŃæĶ¾ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . shuffle Mode Ġ= ĠPlay back State Compat . SH UFF LE _ MODE _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ æĺ¯åĲ¦ éļıæľº æĴŃæĶ¾ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . is Shuffle Mode ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepeat Mode Ġ= ĠMusic Manager . instance . shuffle Mode ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . SH UFF LE _ MODE _ NONE ) Ġ" åĲ¦ " Ġelse Ġ" æĺ¯ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® æĴŃæĶ¾ æ¨¡å¼ı ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . play Mode ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepeat Mode Ġ= ĠMusic Manager . instance . repeat Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . REPEAT _ MODE _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . repeat Mode Ġ= ĠPlay back State Compat . REPEAT _ MODE _ ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" è®¾ç½®ä¸º åįķ æĽ² å¾ªçİ¯ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . REPEAT _ MODE _ ONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . repeat Mode Ġ= ĠPlay back State Compat . REPEAT _ MODE _ ALL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" è®¾ç½®ä¸º åĪĹè¡¨ å¾ªçİ¯ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . REPEAT _ MODE _ ALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . repeat Mode Ġ= ĠPlay back State Compat . REPEAT _ MODE _ NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" è®¾ç½®ä¸º é¡ºåºı æĴŃæĶ¾ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ æĴŃæĶ¾ æ¨¡å¼ı ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . curr Play Mode ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepeat Mode Ġ= ĠMusic Manager . instance . repeat Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . REPEAT _ MODE _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" å½ĵåīį ä¸º é¡ºåºı æĴŃæĶ¾ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . REPEAT _ MODE _ ONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" å½ĵåīį ä¸º åįķ æĽ² å¾ªçİ¯ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( repeat Mode Ġ== ĠPlay back State Compat . REPEAT _ MODE _ ALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" å½ĵåīį ä¸º åĪĹè¡¨ å¾ªçİ¯ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// æĺ¯åĲ¦ æľī ä¸ĭ ä¸Ģ é¦ĸ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . hasNext ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Next Ġ= ĠMusic Manager . instance . is Skip To Next Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġif Ġ( hasNext ) Ġ" æľī " Ġelse Ġ" æ²¡ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// æĺ¯åĲ¦ æľī ä¸Ĭ ä¸Ģ é¦ĸ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . has Pre ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Pre Ġ= ĠMusic Manager . instance . is Skip To Previous Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġif Ġ( has Pre ) Ġ" æľī " Ġelse Ġ" æ²¡ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ æĴŃæĶ¾ éĢŁåº¦ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . play Speed ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeed Ġ= ĠMusic Manager . instance . playback Speed ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" speed Ġ= Ġ$ speed ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// éŁ³ éĩı åĬł ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . add volume ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvolume Ġ= ĠMusic Manager . instance . volume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ+= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( volume Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . volume Ġ= Ġvolume ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// éŁ³ éĩı åĩı ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . jian volume ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvolume Ġ= ĠMusic Manager . instance . volume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ-= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( volume Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . volume Ġ= Ġvolume ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ å½ĵåīį éŁ³ éĩı ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . get Volume ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolume Ġ= ĠMusic Manager . instance . volume ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" volume Ġ= Ġ$ volume ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ æľ¬åľ° éŁ³ é¢ĳ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . local Song ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠMusic Manager . instance . query Song Info In Local () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" list . size Ġ= Ġ" Ġ+ Ġlist . size , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// æ·»åĬł çĽĳåĲ¬ ĊĠĠĠĠĠĠĠ ĠMusic Manager . instance . add Player EventListener ( this ) ĊĠĠĠĠĠĠĠ Ġ// è¿Ľ åº¦ æĽ´æĸ° ĊĠĠĠĠĠĠĠ Ġm Timer Task . set Update Progress Task ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠMusic Manager . instance . playing Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠMusic Manager . instance . duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffered Ġ= ĠMusic Manager . instance . buffered Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Seek Bar . max . to Long () Ġ!= Ġduration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Seek Bar . max Ġ= Ġduration . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Seek Bar . progress Ġ= Ġposition . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Seek Bar . secondary Progress Ġ= Ġbuffered . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Time . text Ġ= Ġformat Music Time ( position ) Ġ+ Ġ"/" Ġ+ Ġformat Music Time ( duration ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// è¿Ľ åº¦ æĿ¡ æ»ĳ åĬ¨ ĊĠĠĠĠĠĠĠ Ġm Seek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar , Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic Manager . instance . seek To ( seek Bar . progress . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġ// è¿ŀæİ¥ éŁ³ é¢ĳ æľįåĬ¡ ĊĠĠĠĠĠĠĠ Ġm Media Session Connection !!. connect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġ// æĸŃ å¼Ģ éŁ³ é¢ĳ æľįåĬ¡ ĊĠĠĠĠĠĠĠ Ġm Media Session Connection !!. disconnect () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ// åĽŀ æĶ¶ èµĦæºĲ ĊĠĠĠĠĠĠĠ ĠMusic Manager . instance . remove Player EventListener ( this ) ĊĠĠĠĠĠĠĠ Ġm Timer Task . remove Update Progress Task () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġon Music Switch ( song Info : ĠSong Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurr Info . text Ġ= Ġ" å½ĵåīį æĴŃæĶ¾ ï¼ļ" Ġ+ Ġsong Info . song Name !! ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = Ġon Music Switch Ġ= Ġ" Ġ+ Ġsong Info . song Name !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Player Start () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å¼Ģå§ĭ æĽ´æĸ° è¿Ľ åº¦ æĿ¡ ĊĠĠĠĠĠĠĠ Ġm Timer Task . start ToUpdate Progress () ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = Ġon Player Start Ġ= Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Player Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åģľæŃ¢ æĽ´æĸ° è¿Ľ åº¦ æĿ¡ ĊĠĠĠĠĠĠĠ Ġm Timer Task . stop ToUpdate Progress () ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = Ġon Player Pause Ġ= Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġon Player Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åģľæŃ¢ æĽ´æĸ° è¿Ľ åº¦ æĿ¡ ĊĠĠĠĠĠĠĠ Ġm Timer Task . stop ToUpdate Progress () ĊĠĠĠĠĠĠĠ Ġm Seek Bar . progress Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġcurr Time . text Ġ= Ġ" 0 0 : 0 0 " ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = Ġon Player Stop Ġ= Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Play Completion ( song Info : ĠSong Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// song Info Ġmaybe Ġnull ĊĠĠĠĠĠĠĠ Ġ// åģľæŃ¢ æĽ´æĸ° è¿Ľ åº¦ æĿ¡ ĊĠĠĠĠĠĠĠ Ġm Timer Task . stop ToUpdate Progress () ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = Ġon Play Completion Ġ= Ġ" Ġ+ Ġsong Info . song Name !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Buffer ing () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = Ġon Buffer ing Ġ= Ġ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( errorCode : ĠInt , Ġerror Msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åģľæŃ¢ æĽ´æĸ° è¿Ľ åº¦ æĿ¡ ĊĠĠĠĠĠĠĠ Ġm Timer Task . stop ToUpdate Progress () ĊĠĠĠĠĠĠĠ ĠLog Util . i (" = ĠonError Ġ= ĠerrorCode :$ errorCode Ġerror Msg :$ error Msg ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠLog Util Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġi ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Log Util ", Ġmsg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġformat Music Time ( duration : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtime Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminute Ġ= Ġduration Ġ/ Ġ 6 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġduration Ġ% Ġ 6 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= ĠMath . round (( seconds . toInt () Ġ/ Ġ 1 0 0 0 ). toFloat ()). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( minute Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġ"$ minute :" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( second Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ+= Ġsecond ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtime ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ