package Ġcom . k us amar u . st android . nic ol ive Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . k us amar u . st android . activity . K ote han List Activity Ċ import Ġcom . k us amar u . st android . activity . NG List Activity Ċ import Ġcom . k us amar u . st android . nic ol ive . bottom fragment . N ico Live Quality Select Bottom Sheet Ċ import Ġcom . k us amar u . st android . nic ol ive . view model . N ico Live ViewModel Ċ import Ġcom . k us amar u . st android . tool .* Ċ import Ġcom . k us amar u . st android . databinding . Fragment Comment Menu Binding Ċ import Ġkotlinx . coroutines . launch ĊĊ Ċ /** Ċ Ġ* Ġ ãģĵ ãģĵ ãĤĴ ãĥ¡ ãĥ³ ãĥĨ ãģĹ ãģ« ãģį ãģŁ ç§ģ ãģ¸ Ċ Ġ* ĠComment Menu Bottom Fragment Ġãģ¨ Ġãģĵãģ® ãĤ¯ãĥ©ãĤ¹ ãģ¯ éģ ķ ãģĨ ãĤĪ ãĢĤ åĳ½åĲį éĽ ĳ ãģł ãģ£ãģŁ ãĢĤ ãģĶ ãĤģ ãĤĵ Ċ Ġ* ĠComment Fragment ãģ® ãĥ¡ ãĥĭ ãĥ¥ ãĥ¼ ãģ¯ ãģĵ ãģĵ ãĢĤ Ċ Ġ* ĠãĤ³ ãĥ¡ãĥ³ãĥĪ ãĤĴ æĬ ¼ ãģĹãģŁ æĻĤ ãģ« ãģ§ãģįãĤĭ ï¼Ī ãĥŃ ãĥĥãĤ¯ ãĤª ãĥ³ ãĢģ ãĤ³ ãĥĨ ãĥı ãĥ³ çĻ»éĮ² ï¼ī ãģª ãĤĵ ãģĭ ãģ¯ Ġ[ Comment Lock on Bottom Fragment ] Ġ ãģ¸ ãģ© ãģĨ ãģ ŀ Ċ Ġ* Ġ*/ Ċ class ĠComment Menu Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġdark Mode Support : ĠDark Mode Support ĊĠĠĠ Ġlateinit Ġvar Ġpref Setting : ĠSharedPreferences ĊĊĠĠĠ Ġval Ġlive Id Ġby Ġlazy Ġ{ ĠviewModel . nico Live HTML . live Id Ġ} ĊĊĠĠĠ Ġ// ĠComment Fragment ãģ¨ ãģĿãĤĮ ãģ® ViewModel ĊĠĠĠ Ġval Ġcomment Fragment Ġby Ġlazy Ġ{ Ġrequire Parent Fragment () Ġas ĠComment Fragment Ġ} ĊĠĠĠ Ġval ĠviewModel Ġby Ġview Models < N ico Live ViewModel >({ Ġcomment Fragment Ġ}) ĊĊĠĠĠ Ġ// ĠActivity ĠResult ĠAPI Ġ!!! ãĢĤ ãģ§ æ¨ © éĻĲ ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ĊĠĠĠ Ġprivate Ġval Ġresult API Permission Ġ= Ġregister For Activity Result ( Activity Result Contracts . Request Permission ()) Ġ{ Ġis G rent ed Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( is G rent ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä»ĺ ä¸İ ãģķãĤĮãģŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . start Popup Play () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġ åħ± æľī çĶ¨ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġcontent Share Ġby Ġlazy Ġ{ ĠContent Share Tool ( require Context ()) Ġ} ĊĊĠĠĠ Ġ/** ĠfindViewById é § Ĩ éĢ Ĳ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġview Binding Ġby Ġlazy Ġ{ ĠFragment Comment Menu Binding . inflate ( layout Inflater ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġview Binding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġdark Mode Support Ġ= ĠDark Mode Support ( require Context ()) ĊĠĠĠĠĠĠĠ Ġpref Setting Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĊĠĠĠĠĠĠĠ Ġ// åĢ¤ è¨Ńå®ļ ĊĠĠĠĠĠĠĠ ĠsetValue () ĊĊĠĠĠĠĠĠĠ Ġ// Comment Fragment ãģ¸ åĢ¤ ãĤĴ æ¸ ¡ ãģĻ ĊĠĠĠĠĠĠĠ Ġset Comment Fragment Value () ĊĊĠĠĠĠĠĠĠ Ġ// ãĤ¯ãĥªãĥĥãĤ¯ ãĤ¤ ãĥĻ ãĥ³ãĥĪ ĊĠĠĠĠĠĠĠ Ġinit Switch () ĊĊĠĠĠĠĠĠĠ Ġ// Outlined Button ãģ® ãĥĨ ãĤŃ ãĤ¹ãĥĪ ãģ® èī² ĊĠĠĠĠĠĠĠ Ġdark mode () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAndroid Ġ 5 ãģ® åł´åĲĪãģ¯ WebView ãģĮ èĲ½ ãģ¡ ãģ¦ ãģĹãģ¾ ãģĨ ãģ®ãģ§ å¡ŀ ãģ Ĳ ĊĠĠĠĠĠĠĠ Ġ// Ġ ãģĵãĤĮ ãģ° ãģ£ ãģĭ ãĤĬ ãģ¯ android x . appcompat : appcompat ãģ® ãģĽ ãģĦ ãģª ãģ®ãģ§ ç§ģ æĤ ª ãģı ãģªãģĦ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ== ĠBuild . VERSION _ CODES . LO L LI POP _ MR 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment N ico Nama Game Switch . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdark mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Dark Mode ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ãĥĢ ãĥ¼ãĤ¯ ãĥ¢ ãĥ¼ãĥī æĻĤ ãĥľ ãĤ¿ ãĥ³ ãģ® ãĥĨ ãĤŃ ãĤ¹ãĥĪ ãģ® èī² ãģĮ å¤ī ãĤı ãĤī ãģªãģĦ ãģ®ãģ§ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠColor State List . valueOf ( Color . parse Color ("# ffffff ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Rotation Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Copy Live Id Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Copy Community Id Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Open Browser Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Ng List Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Share Button . setTextColor ( color ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ãĤ¯ãĥªãĥĥãĤ¯ ãĤ¤ ãĥĻ ãĥ³ãĥĪ ĊĠĠĠ Ġprivate Ġfun Ġinit Switch () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ãĤŃ ãĥ£ ãĤ¹ãĥĪ ĊĠĠĠĠĠĠĠ Ġif Ġ( comment Fragment . is Init Google Cast ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoogle Cast Ġ= Ġcomment Fragment . google Cast ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Cast . setUp Cast Button ( view Binding . fragment Comment Fragment Menu Cast Button ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĶ» è³ ª å¤īæĽ´ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Quality Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN ico Live Quality Select Bottom Sheet (). show ( comment Fragment . child FragmentManager , Ġ" quality _ change ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// å¼ · åĪ¶ çĶ» éĿ¢ åĽŀ è» ¢ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Rotation Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . set Land scape Por trait () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// çķª çµĦ ID ãĤ³ ãĥĶ ãĥ¼ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Copy Live Id Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . copy Program Id () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ãĤ³ ãĥŁ ãĥ¥ ãĥĭ ãĥĨãĤ£ ID ãĤ³ ãĥĶ ãĥ¼ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Copy Community Id Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . copy Community Id () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ãĥĸãĥ© ãĤ¦ ãĤ¶ ãģ§ éĸĭ ãģı ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Open Browser Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ" https :// live 2 . nic ov ideo . jp / watch /$ live Id ". to Uri () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// NG ãĥªãĤ¹ãĥĪ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Ng List Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠNG List Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ï¼Ī çĶ» åĥı æ· » ä»ĺ ãģĹãģªãģĦ ï¼ī åħ± æľī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Share Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Share . show Share Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Id Ġ= Ġlive Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Name Ġ= ĠviewModel . program Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Time Second Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// çĶ» åĥı ãģ¤ ãģį åħ± æľī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Share Image Attach Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä»Ĭ ãģĦ ãĤĭ éĥ¨ å± ĭ ãģ® åĲįåīį åħ¥ ãĤĮãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Share . show Share Content Attach Picture ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer View Ġ= Ġcomment Fragment . view Binding . comment Fragment Surface View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Canvas Ġ= Ġcomment Fragment . view Binding . comment Fragment Comment Canvas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Id Ġ= ĠviewModel . program Title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Title Ġ= Ġlive Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Time Second Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// çĶŁ æĶ¾ éĢģ ãĤĴ åĨį çĶŁ ãĥľ ãĤ¿ ãĥ³ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu View Live Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( require Parent Fragment () Ġas ĠComment Fragment ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Comment Only Mode (! viewModel . is Comment Only Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ Ĳ ãĥĥ ãĤ° ãĤ°ãĥ© ãĤ¦ ãĥ³ãĥī åĨį çĶŁ ãĢĤ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Background Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Background Play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . isNot Receive Live . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Comment Only Mode (! viewModel . is Comment Only Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ãĥĿ ãĥĥãĥĹ ãĤ¢ãĥĥãĥĹ åĨį çĶŁ ãĢĤ ãģĦ ãģ¤ ãģĭ æĢ Ĵ ãĤī ãĤĮ ãģĿ ãģĨ ï¼Ī ãĥĹ ãĥ¬ åŀ ¢ éĻĲ å®ļ è¦ģ ç´ł ãģł ãģĹ ï¼ī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Popup Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( if Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! Settings . can Draw Overlay s ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġä¸Ĭ ãģ« éĩį ãģ Ń ãĤĭ æ¨ © éĻĲ çĦ¡ ãģĦ ãģ¨ ãģį ãĢĤ åıĸ ãĤĬ ãģ« è¡Į ãģı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult API Permission . launch ( Manifest . permission . SYSTEM _ ALERT _ WINDOW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ãĥĿ ãĥĥãĥĹ ãĤ¢ãĥĥãĥĹ åĨį çĶŁ ãĢĤ ãĤ³ ãĥ¡ãĥ³ãĥĪ ä»ĺ ãģį ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Popup Play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . isNot Receive Live . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Comment Only Mode (! viewModel . is Comment Only Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ãĥķ ãĥŃ ãĥ¼ãĥ Ĩ ãĤ£ ãĥ³ãĤ° ãĤ³ ãĥ¡ ãĥĵ ãĥ¥ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Floating Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Activity ç§» åĭķ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . show B ubbles () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ãĥķ ãĥŃ ãĥ¼ãĥ Ĩ ãĤ£ ãĥ³ãĤ° ãĤ³ ãĥ¡ ãĥĵ ãĥ¥ ãģ¯ Android 1 0 ä»¥ éĻį ãģ§ åĪ©çĶ¨ åı¯èĥ½ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Floating Button . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġï¼Ī ãĥ Ľ ãĥ¼ãĥł çĶ» éĿ¢ ãģ« è¿½åĬł ãģ® ãĤĦ ãģ¤ ï¼ī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Dy man ic Shortcut Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Home Screen Shortcut () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åĮ ¿ åĲį éĿŀ è¡¨ç¤º ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Iy ay o Hidden Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . is Hide Tok ume i . value Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ ä½İ éģ ħ å»¶ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Low Latency Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ Ġput Boolean (" nic ol ive _ low _ latency ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . nico Live HTML . send Low Latency ( isChecked ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æĺł åĥı ãĤĴ åıĹ ä¿¡ ãģĹãģªãģĦ ï¼Ī å°Ĩ æĿ¥ ãģ® ãĥĭ ãĤ³ ãĥĭ ãĤ³ å®Ł æ³ ģ ãģ® ãģŁãĤģ ï¼Ł ï¼ī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Not Live Receive Switch . isChecked Ġ= ĠviewModel . isNot Receive Live . value Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Not Live Receive Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . isNot Receive Live . post Value (! viewModel . isNot Receive Live . value !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ¦ãĥ¼ãĤ¶ãĥ¼ ID éĿŀ è¡¨ç¤º ãĥ¢ ãĥ¼ãĥī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Comment Setting Hidden Id Sw t ich . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean (" setting _ id _ hidden ", Ġis Checked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥ¡ãĥ³ãĥĪ ä¸Ģ è¡Į ãĥ¢ ãĥ¼ãĥī Ġon / off ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Setting One Line Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean (" setting _ one _ line ", Ġis Checked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥŀãĥ³ãĥī ä¿ĿæĮģ ãĥ¢ ãĥ¼ãĥī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Command Save Switch . setOn Checked ChangeListener Ġ{ Ġcompound Button , Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean (" setting _ command _ save ", Ġb ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ İ ãĥĥ ãĥģ éł ĺ åŁŁ ãģ« ä¾ µ çķ¥ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Display Cut out Info Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean (" setting _ display _ cut out ", Ġis Checked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . hide StatusBar AndSet FullScreen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ĭ ãĤ³ çĶŁ ãĤ ² ãĥ¼ãĥł ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment N ico Nama Game Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset N ico Nama Game () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove N ico Nama Game () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ĭ ãĤ³ çĶŁ ãĤ ² ãĥ¼ãĥł ï¼Ī çĶŁ æĶ¾ éĢģ ãĥ» ãĤ³ ãĥ¡ãĥ³ãĥĪ ãĤĤ WebView ãģ§ åĪ©çĶ¨ ãģĻãĤĭ ï¼ī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment N ico Nama Game Web view Player Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o Player . volume Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset N ico Nama Game ( isChecked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o Player . volume Ġ= Ġ 1 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove N ico Nama Game () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Volume Seek . 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 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex o Player . volume Ġ= Ġprogress Ġ/ Ġ 1 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥĨ ãĥı ãĥ³ ä¸Ģ è¦§ çĶ» éĿ¢ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu K ote han Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠK ote han List Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠãĤ¨ ãĥ¢ ãĥ¼ãĤ·ãĥ§ãĥ³ ãĤĴ ãĤ³ ãĥ¡ãĥ³ãĥĪ ä¸Ģ è¦§ ãģ« è¡¨ç¤º ãģĹãģªãģĦ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Hide Em otion Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ Ġput Boolean (" setting _ nic ol ive _ hide _ emotion ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ãĢĮ ãĥ Ľ ãĥ¼ãĥł çĶ» éĿ¢ ãģ« è¿½åĬł ãĢį ãģ® ãĤĦ ãģ¤ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcreate Home Screen Shortcut () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . nico Live Community Or Channel Data LiveData . value ?. let Ġ{ Ġcommunity Or Channel Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ · ãĥ§ ãĥ¼ãĥĪ ãĤ« ãĥĥãĥĪ ä½ľæĪĲ éĸ¢æķ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCreate Shortcut Tool . create Home Screen Shortcut ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Id Ġ= Ġcommunity Or Channel Data . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Title Ġ= Ġcommunity Or Channel Data . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Url Ġ= Ġcommunity Or Channel Data . icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetValue () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ãĤ³ ãĥ¡ãĥ³ãĥĪ éĿŀ è¡¨ç¤º ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Comment Hidden Switch . isChecked Ġ= Ġpref Setting . getBoolean (" nic ol ive _ comment _ canvas _ hide ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// Info ãĤ³ ãĥ¡ãĥ³ãĥĪ éĿŀ è¡¨ç¤º ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Hide Info Perm Switch . isChecked Ġ= Ġcomment Fragment . hide Info Un nk ome ĊĠĠĠĠĠĠĠ Ġ// åĮ ¿ åĲį ãģ§ æĬķ ç¨ ¿ ãģĻãĤĭ ãģĭ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Iy ay o Comment Switch . isChecked Ġ= ĠviewModel . nico Live HTML . is Post Tok ume i Comment ĊĠĠĠĠĠĠĠ Ġ// åĮ ¿ åĲį ãĤ³ ãĥ¡ãĥ³ãĥĪ ãĤĴ éĿŀ è¡¨ç¤º ãģ« ãģĻãĤĭ ãģĭ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Iy ay o Hidden Switch . isChecked Ġ= ĠviewModel . is Hide Tok ume i . value Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ// ä½İ éģ ħ å»¶ ãĥ¢ ãĥ¼ãĥī ãģ® æľī åĬ¹ çĦ¡ åĬ¹ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Low Latency Switch . isChecked Ġ= Ġpref Setting . getBoolean (" nic ol ive _ low _ latency ", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥ¡ãĥ³ãĥĪ ä¸Ģ è¡Į ãĤĤ ãĥ¼ ãģ© ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Comment Setting Hidden Id Sw t ich . isChecked Ġ= Ġpref Setting . getBoolean (" setting _ id _ hidden ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// ĠãĤ³ ãĥŀãĥ³ãĥī ä¿ĿæĮģ ãĥ¢ ãĥ¼ãĥī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Command Save Switch . isChecked Ġ= Ġpref Setting . getBoolean (" setting _ command _ save ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ¦ãĥ¼ãĤ¶ãĥ¼ ID éĿŀ è¡¨ç¤º ãĥ¢ ãĥ¼ãĥī ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Setting One Line Switch . isChecked Ġ= Ġpref Setting . getBoolean (" setting _ one _ line ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// éŁ³ éĩı ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Volume Seek . progress Ġ= Ġ( comment Fragment . exo Player . volume Ġ* Ġ 1 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġ// ãĥĭ ãĤ³ çĶŁ ãĤ ² ãĥ¼ãĥł æľī åĬ¹ æĻĤ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment N ico Nama Game Switch . isChecked Ġ= Ġcomment Fragment . is Added N ico Nama Game ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ İ ãĥĥ ãĥģ éł ĺ åŁŁ ãģ« ä¾ µ çķ¥ ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Display Cut out Info Switch . isChecked Ġ= Ġpref Setting . getBoolean (" setting _ display _ cut out ", Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Comment Fragment ãģ¸ åĢ¤ ãĤĴ æ¸ ¡ ãģĻ ĊĠĠĠ Ġprivate Ġfun Ġset Comment Fragment Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// æĬ ¼ ãģĹãģŁ ãĤī ãģĻ ãģ Ĳ åıį æĺł ãģ§ãģįãĤĭ ãĤĪãģĨãģ« ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Comment Hidden Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ãĤ³ ãĥ¡ãĥ³ãĥĪ éĿŀ è¡¨ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ Ġput Boolean (" nic ol ive _ comment _ canvas _ hide ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġif Ġ( isChecked ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Layout Tool . set Motion Layout View Visible ( comment Fragment . view Binding . comment Fragment Motion Layout , Ġcomment Fragment . view Binding . comment Fragment Comment Canvas . id , Ġvisibility ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Hide Info Perm Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Info ãĤ³ ãĥ¡ãĥ³ãĥĪ éĿŀ è¡¨ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Fragment . hide Info Un nk ome Ġ= Ġis Checked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Binding . fragment Comment Fragment Menu Iy ay o Comment Switch . setOn Checked ChangeListener Ġ{ Ġbutton View , Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĮ ¿ åĲį ãģ§ æĬķ ç¨ ¿ ãģĻãĤĭ ãģĭ ãģ© ãģĨ ãģĭ ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . nico Live HTML . is Post Tok ume i Comment Ġ= Ġis Checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Setting . edit Ġ{ Ġput Boolean (" nic ol ive _ post _ tok ume i ", Ġis Checked ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }