package Ġcom . de de . n ativ et ools . net speed . service Ċ Ċ import Ġandroid . app . Key guard Manager Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . widget . Remote Views Ċ import Ġandroidx . core . app . Notification Channel Compat Ċ import Ġandroidx . core . app . Notification Channel Group Compat Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . core . graphics . drawable . Icon Compat Ċ import Ġandroidx . navigation . Nav Deep Link Builder Ċ import Ġcom . de de . n ativ et ools . R Ċ import Ġcom . de de . n ativ et ools . net speed . Net Speed Configuration Ċ import Ġcom . de de . n ativ et ools . net speed . utils . Net Formatter Ċ import Ġcom . de de . n ativ et ools . net speed . utils . Net Text Icon Factory Ċ import Ġcom . de de . n ativ et ools . net speed . utils . Network Usage Util Ċ import Ġcom . de de . n ativ et ools . util .* Ċ Ċ /** Ċ Ġ* Ġ ç½ĳ éĢŁ éĢļçŁ¥ Ċ Ġ*/ Ċ object ĠNet Speed Notification Helper Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCHAN NEL _ GROUP _ ID Ġ= Ġ" net _ speed _ channel _ group " ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCHAN NEL _ ID _ DEFAULT Ġ= Ġ" net _ speed _ channel _ default " ĊĠĠĠ Ġprivate Ġconst Ġval ĠCHAN NEL _ ID _ SIL ENCE Ġ= Ġ" net _ speed _ channel _ sil ence " ĊĊĠĠĠ Ġprivate Ġfun Ġis Secure ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey guard Manager Ġ= Ġcontext . require System Service < Key guard Manager >() ĊĠĠĠĠĠĠĠ Ġreturn Ġkey guard Manager . is Device Secure Ġ|| Ġkey guard Manager . is Key guard Secure ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĶģ å±ı éĢļçŁ¥ æĺ¾ç¤º è®¾ç½® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgo Lock Hide Notification Setting ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O Ġ&& Ġis Secure ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . ACTION _ CHANNEL _ NOTIFICATION _ SETTINGS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . EXTRA _ APP _ PACKAGE Ġto Ġcontext . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . EXTRA _ CHANNEL _ ID Ġto ĠCHAN NEL _ ID _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSettings . ACTION _ NOTIFICATION _ SETTINGS ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent (" android . settings . NOTIFICATION _ SETTINGS ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġintent . new Task (). launch Activity ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Notification Setting ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġcontext . packageName ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . ACTION _ CHANNEL _ NOTIFICATION _ SETTINGS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . EXTRA _ APP _ PACKAGE Ġto ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . EXTRA _ CHANNEL _ ID Ġto ĠCHAN NEL _ ID _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS , Ġ" package :$ packageName ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġintent . new Task (). launch Activity ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġare Notification Enabled ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Compat Ġ= ĠNotification Manager Compat . from ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġare Notifications Enabled Ġ= Ġnotification Manager Compat . are Notifications Enabled () ĊĠĠĠĠĠĠĠ Ġvar Ġchannel Disabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Channel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager Compat . get Notification Channel ( CHANNEL _ ID _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notification Channel Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= Ġnotification Channel . import ance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Disabled Ġ= Ġimportance Ġ<= ĠNotification Manager Compat . IMPORT ANCE _ MIN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġare Notifications Enabled Ġ&& Ġ! channel Disabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æķ°æį® ä½¿çĶ¨ éĩı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Usage Text ( context : ĠContext , Ġconfiguration : ĠNet Speed Configuration ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Logic . check App Ops ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtoday Bytes : ĠLong ĊĠĠĠĠĠĠĠ Ġval Ġmonth Bytes : ĠLong ĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . just Mobile Usage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoday Bytes Ġ= ĠNetwork Usage Util . today Mobile Usage Bytes ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Bytes Ġ= ĠNetwork Usage Util . month Mobile Usage Bytes ( context ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoday Bytes Ġ= ĠNetwork Usage Util . today Network Usage Bytes ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Bytes Ġ= ĠNetwork Usage Util . month Network Usage Bytes ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . notify _ net _ speed _ sub , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoday Bytes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . FLAG _ BYTE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . AC CUR ACY _ EX ACT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). sp licing (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Bytes , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . FLAG _ BYTE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . AC CUR ACY _ EX ACT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). sp licing () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ç³»ç»Ł çīĪæľ¬ >= S Ġ ä¸Ķ Ġtarget Version >= S ĠæĹ¶ ï¼Į è¿ĶåĽŀ true ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġit SS Above ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . S Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// developer . android . google . cn / about / versions / 1 2 / behavior - changes - 1 2 # custom - notifications ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Info . target Sdk Version Ġ>= ĠBuild . VERSION _ CODES . S ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĽå»º ç½ĳ éĢŁ éĢļçŁ¥ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ ĊĠĠĠĠ Ġ* Ġ@ param Ġconfiguration Ġéħįç½® ĊĠĠĠĠ Ġ* Ġ@ param Ġrx Speed Ġä¸ĭ è¡Į ç½ĳ éĢŁ ĊĠĠĠĠ Ġ* Ġ@ param Ġtx Speed Ġä¸Ĭ è¡Į ç½ĳ éĢŁ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Notification ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠNet Speed Configuration , ĊĠĠĠĠĠĠĠ Ġrx Speed : ĠLong Ġ= Ġ 0 L , ĊĠĠĠĠĠĠĠ Ġtx Speed : ĠLong Ġ= Ġ 0 L , ĊĠĠĠ Ġ): ĠNotification Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcreate Channels ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġif Ġ( configuration . show Blank Notification ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĺ¾ç¤º éĢı æĺİ åĽ¾ æłĩ ï¼Į å¹¶ éĻį ä½İ éĢļçŁ¥ ä¼ĺåħĪ çº§ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Builder ( context , ĠCHAN NEL _ ID _ SIL ENCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ LOW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( create Blank Icon ( configuration )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Compat . Builder ( context , ĠCHAN NEL _ ID _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( create Icon Compat ( configuration , Ġrx Speed , Ġtx Speed )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Only Alert Once ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set O ngo ing ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Local Only ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show When ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Category ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sound ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Badge IconType ( Notification Compat . BAD GE _ ICON _ NONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ized ( false ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . hide Lock Notification ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setVisibility ( Notification Compat . VIS IBILITY _ SECRET ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setVisibility ( Notification Compat . VIS IBILITY _ PUBLIC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġpending Flag Ġ= ĠPending Intent . FLAG _ UPDATE _ CURRENT ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . S ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// developer . android . com / about / versions / 1 2 / behavior - changes - all # foreground - service - notification - delay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Wrong Constant ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . foreground Service Behavior Ġ= ĠNotification Compat . FO REG ROUND _ SERVICE _ IM MEDI ATE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// developer . android . com / about / versions / 1 2 / behavior - changes - 1 2 # pending - intent - mut ability ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpending Flag Ġ= ĠPending Intent . FLAG _ MUT ABLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . hide Notification Ġ&& Ġ! it SS Above ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcontext . application Info . target Sdk Version Ġ< ĠBuild . VERSION _ CODES . S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// developer . android . google . cn / about / versions / 1 2 / behavior - changes - 1 2 # custom - notifications ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremote Views Ġ= ĠRemote Views ( context . packageName , ĠR . layout . notification _ empty _ view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . set Custom ContentView ( remote Views ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownload Speed Str : ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . format ( rx Speed , ĠNet Formatter . FLAG _ FULL , ĠNet Formatter . AC CUR ACY _ EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sp licing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupload Speed Str : ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNet Formatter . format ( tx Speed , ĠNet Formatter . FLAG _ FULL , ĠNet Formatter . AC CUR ACY _ EX ACT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sp licing () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Str Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . notify _ net _ speed _ msg , Ġupload Speed Str , Ġdownload Speed Str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setContent Title ( content Str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( configuration . usage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusage Text Ġ= Ġget Usage Text ( context , Ġconfiguration ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setContent Text ( usage Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( configuration . quick Closeable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclose Pending Ġ= ĠIntent ( Net Speed Service . ACTION _ CLOSE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Pending Broadcast ( context , Ġpending Flag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . addAction ( close Pending . to Notification Compat Action ( R . string . action _ close )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . notify Clickable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġé»ĺè®¤ åĲ¯åĬ¨ åºĶçĶ¨ é¦ĸé¡µ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠNav Deep Link Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Graph ( R . navigation . nav _ graph ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Destination ( R . id . net Speed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Pending Intent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġnotification Channel Created Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Channels ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( notification Channel Created ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠNotification Manager Compat . from ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Group Ġ= ĠNotification Channel Group Compat . Builder ( CHANNEL _ GROUP _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName ( context . getString ( R . string . label _ net _ speed _ service )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ( context . getString ( R . string . desc _ net _ speed _ notify )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġmanager . create Notification Channel Group ( channel Group ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Sil ence Ġ= Ġcontext . create Channel ( true ) ĊĠĠĠĠĠĠĠ Ġmanager . create Notification Channel ( channel Sil ence ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Default Ġ= Ġcontext . create Channel ( false ) ĊĠĠĠĠĠĠĠ Ġmanager . create Notification Channel ( channel Default ) ĊĊĠĠĠĠĠĠĠ Ġnotification Channel Created Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠContext . create Channel ( is Sil ence : ĠBoolean ): ĠNotification Channel Compat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= Ġif Ġ( is Sil ence ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Channel Compat . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCHAN NEL _ ID _ SIL ENCE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager Compat . IMPORT ANCE _ LOW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). setName ( this . getString ( R . string . label _ net _ speed _ sil ence _ channel )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Channel Compat . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCHAN NEL _ ID _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager Compat . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). setName ( this . getString ( R . string . label _ net _ speed _ default _ channel )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . setDescription ( this . getString ( R . string . desc _ net _ speed _ notify )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Badge ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Group ( CHANNEL _ GROUP _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set V ibration Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Lights Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Sound ( null , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Icon Compat ( ĊĠĠĠĠĠĠĠ Ġconfiguration : ĠNet Speed Configuration , ĊĠĠĠĠĠĠĠ Ġrx Speed : ĠLong , ĊĠĠĠĠĠĠĠ Ġtx Speed : ĠLong , ĊĠĠĠ Ġ): ĠIcon Compat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠNet Text Icon Factory . create ( rx Speed , Ġtx Speed , Ġconfiguration ) ĊĠĠĠĠĠĠĠ Ġreturn ĠIcon Compat . create With Bitmap ( bitmap ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Blank Icon ( configuration : ĠNet Speed Configuration ): ĠIcon Compat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠNet Text Icon Factory . create Blank ( configuration ) ĊĠĠĠĠĠĠĠ Ġreturn ĠIcon Compat . create With Bitmap ( bitmap ) ĊĠĠĠ Ġ} Ċ Ċ }