package Ġcom . ice . kt u ice . al . grade Table . notifications Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Task Stack Builder Ċ import Ġcom . ice . kt u ice . R Ċ import Ġcom . ice . kt u ice . al . logger . Ice Log Ċ import Ġcom . ice . kt u ice . al . logger . info Ċ import Ġcom . ice . kt u ice . ui . main . MainActivity Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines .*; ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAnd ri us Ġon Ġ 2 / 2 0 / 2 0 1 8 . Ċ Ġ* ĠDefault Ġnotification Ġpushing Ċ Ġ*/ Ċ class ĠNotification Factory Impl ( val Ġcontext : ĠContext ): ĠNotification Factory , ĠI ce Log Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġ_ notification Track Ġ= Ġ 4 1 6 ĊĠĠĠĠĠĠĠ Ġval Ġnew Notification ID : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ++ _ notification Track ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ Ġcreate Notification Channel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpush Notification ( message : ĠString ){ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" push ing Ġnotification !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġid Ġof Ġthe Ġchannel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCHAN NEL _ ID Ġ= Ġ" test _ notification _ channel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Builder Ġ= ĠNotification Compat . Builder ( context , ĠCHAN NEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Lights ( Color . arg b ( 0 xff , Ġ 0 x 0 0 , Ġ 0 xff , Ġ 0 x 0 0 ), Ġ 3 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . logo _ v 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title (" KT U Ġice ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set O ngo ing ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreates Ġan Ġexplicit Ġintent Ġfor Ġan ĠActivity Ġin Ġyour Ġapp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Intent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġstack Ġbuilder Ġobject Ġwill Ġcontain Ġan Ġart ificial Ġback Ġstack Ġfor Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstarted ĠActivity . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġensures Ġthat Ġnavig ating Ġbackward Ġfrom Ġthe ĠActivity Ġleads Ġout Ġof ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġyour Ġapp Ġto Ġthe ĠHome Ġscreen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Builder Ġ= ĠTask Stack Builder . create ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdds Ġthe Ġback Ġstack Ġfor Ġthe ĠIntent Ġ( but Ġnot Ġthe ĠIntent Ġitself ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Parent Stack ( MainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdds Ġthe ĠIntent Ġthat Ġstarts Ġthe ĠActivity Ġto Ġthe Ġtop Ġof Ġthe Ġstack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Next Intent ( result Intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// m Builder . setContent Intent ( result Pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Notification Manager Ġ= Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġm Notification Id Ġis Ġa Ġunique Ġinteger Ġyour Ġapp Ġuses Ġto Ġidentify Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnotification . ĠFor Ġexample , Ġto Ġcancel Ġthe Ġnotification , Ġyou Ġcan Ġpass Ġits ĠID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnumber Ġto ĠNotification Manager . cancel (). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot if Ġ= Ġm Builder . build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġfix Ġled Ġlights Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġnot if . defaults Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġnot if . led ARGB Ġ= ĠColor . CY AN Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġnot if . led On MS Ġ= Ġ 3 0 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġnot if . led Off MS Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Notification Manager . notify ( new Notification ID , Ġnot if ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo (" Notification Ġpushed !") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" New Api ") ĊĠĠĠ Ġprivate Ġfun Ġcreate Notification Channel (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Notification Manager Ġ= Ġcontext . getSystem Service ( Context . NOTIFICATION _ SERVICE ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġid Ġof Ġthe Ġchannel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġ" test _ notification _ channel " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġuser - visible Ġname Ġof Ġthe Ġchannel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" Test " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġuser - visible Ġdescription Ġof Ġthe Ġchannel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġ" H ey y " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Channel Ġ= ĠNotification Channel ( id , Ġname , Ġimportance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConfigure Ġthe Ġnotification Ġchannel . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . enable Lights ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSets Ġthe Ġnotification Ġlight Ġcolor Ġfor Ġnotifications Ġposted Ġto Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġchannel , Ġif Ġthe Ġdevice Ġsupports Ġthis Ġfeature . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . light Color Ġ= ĠColor . CY AN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . enable V ibration ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Channel . vi br ation Pattern Ġ= Ġlong ArrayOf ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Notification Manager . create Notification Channel ( m Channel ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" VERSION . SDK _ INT Ġ< ĠO ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }