package Ġcom . example . hak aton application Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Count Down Timer Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . navigate Up Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller Ċ import Ġandroidx . navigation . ui . setup With Nav Controller Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . example . hak aton application . databinding . Activity Main Binding Ċ import Ġcom . yandex . map kit . Map Kit Factory Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĊĊĊ ĊĊĠĠĠ Ġval Ġtimer Ġ= Ġobject : ĠCount Down Timer ( 4 0 0 0 , Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( millis Until Finished : ĠLong ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Intent Ġ= ĠIntent ( application Context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Intent : ĠPending Intent Ġ= ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġnotification Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPending Intent . FLAG _ CANCEL _ CURRENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( application Context , ĠCHAN NEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . nat if ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title (" ÐĹ Ð°Ð´ Ð°Ð½Ð¸Ðµ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text (" ÐŁ ÑĢÐ¸ ÑĪ Ð»Ð¾ ĠÐ½Ð¾Ð² Ð¾Ðµ ĠÐ·Ð°Ð´ Ð°Ð½Ð¸Ðµ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( content Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ DEFAULT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Notification Manager Compat . from ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnotification Id Ġis Ġa Ġunique Ġint Ġfor Ġeach Ġnotification Ġthat Ġyou Ġmust Ġdefine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify ( NOTIFICATION _ ID , Ġbuilder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// Map Kit Factory . set ApiKey (" 2 a 0 7 e 2 1 a - 3 8 0 2 - 4 6 3 8 - 8 eb 2 - 0 0 1 4 a 6 0 2 c 4 8 c ") ĊĠĠĠĠĠĠĠ Ġ// Map Kit Factory . initialize ( this ) ĊĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( binding . app Bar Main . toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdrawer Layout : ĠDraw er Layout Ġ= Ġbinding . drawer Layout ĊĠĠĠĠĠĠĠ Ġval Ġnav View : ĠNavigation View Ġ= Ġbinding . nav View ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment _ content _ main ) ĊĠĠĠĠĠĠĠ Ġ// ĠPass ing Ġeach Ġmenu ĠID Ġas Ġa Ġset Ġof ĠI ds Ġbecause Ġeach ĊĠĠĠĠĠĠĠ Ġ// Ġmenu Ġshould Ġbe Ġconsidered Ġas Ġtop Ġlevel Ġdest inations . ĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ home , ĠR . id . nav _ gallery , ĠR . id . nav _ slide show , ĠR . id . nav _ notification , ĠR . id . nav _ exam , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ info , ĠR . id . nav _ contacts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġdrawer Layout ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠĠĠĠĠ Ġnav View . setup With Nav Controller ( nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġruntime Permissions ĊĠĠĠĠĠĠĠ Ġall Permissions Granted () ĊĊĊĠĠĠĠĠĠĠ Ġcreate Notification Channel () ĊĠĠĠĠĠĠĠ Ġtimer . start () ĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe ĠNotification Channel , Ġbut Ġonly Ġon ĠAPI Ġ 2 6 + Ġbecause ĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠNotification Channel Ġclass Ġis Ġnew Ġand Ġnot Ġin Ġthe Ġsupport Ġlibrary ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" asd " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Text Ġ= Ġ" asd " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( CHANNEL _ ID , Ġname , Ġimportance ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRegister Ġthe Ġchannel Ġwith Ġthe Ġsystem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager : ĠNotification Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget System Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġfind Nav Controller ( R . id . nav _ host _ fragment _ content _ main ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnav Controller . navigate Up ( app Bar Configuration ) Ġ|| Ġsuper . on Support Navigate Up () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġrequired Permissions : ĠArray < String ?> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġthis . package Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Package Info ( this . packageName , ĠPackage Manager . GET _ PERMISSION S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġps Ġ= Ġinfo . requested Permissions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ps Ġ!= Ġnull Ġ&& Ġps . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġps ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf Null s ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf Null s ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġall Permissions Granted (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġrequired Permissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Permission Granted ( this , Ġpermission )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġval Ġruntime Permissions : ĠUnit ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Needed Permissions : ĠMutable List < String ?> Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( permission Ġin Ġrequired Permissions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Permission Granted ( this , Ġpermission )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Needed Permissions . add ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Needed Permissions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Needed Permissions . to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION _ REQUEST S ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < String >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Permission Ġgranted !") ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOT IFICATION _ ID Ġ= Ġ 1 0 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL _ ID Ġ= Ġ" channel ID " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Main " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPER MISSION _ REQUEST S Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġfun Ġis Permission Granted ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission : ĠString ? ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( context , Ġpermission !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Permission Ġgranted : Ġ$ permission ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Permission ĠNOT Ġgranted : Ġ$ permission ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }