package Ġcom . sil icon labs . ble demo . Base Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . sil icon labs . ble demo . R Ċ Ċ abstract Ġclass ĠBase Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprotected Ġconst Ġval ĠDIS MIS S _ DIALOG _ DELAY _ MS Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠConnection Status Ġ{ ĊĠĠĠĠĠĠĠ ĠCONNECT ING , ĠCONNECT ED , ĠDIS CONNECT ING , ĠDIS CONNECTED , ĠREAD ING _ DEVICE _ STATE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġconnection Status Modal Dialog : ĠProgress Dialog With Spinner ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġshow Modal Dialog ( conn Stat : ĠConnection Status ? Ġ= Ġnull , Ġcancel Listener : ĠDialog Interface . On Cancel Listener ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Modal Dialog () ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnote Ġthat Ġthe Ġdialog Ġstate Ġis Ġnever Ġshown Ġwhen Ġdisconnect ing Ġfrom Ġa Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog Ġ= Ġwhen Ġ( conn Stat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . CONNECT ING Ġ-> ĠProgress Dialog With Spinner ( this @ Base Activity , Ġ" Connecting ...", Ġtrue , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . CONNECTED Ġ-> ĠProgress Dialog With Spinner ( this @ Base Activity , Ġ" Connection ĠSuccessful !", Ġfalse , ĠR . drawable . ic _ check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . DIS CONNECT ING Ġ-> ĠProgress Dialog With Spinner ( this @ Base Activity , Ġ" Disconnect ing ...", Ġfalse , ĠR . drawable . ic _ check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . DIS CONNECTED Ġ-> ĠProgress Dialog With Spinner ( this @ Base Activity , Ġ" Device ĠDis connected ", Ġfalse , ĠR . drawable . ic _ check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConnection Status . READ ING _ DEVICE _ STATE Ġ-> ĠProgress Dialog With Spinner ( this @ Base Activity , Ġ" Reading Ġdevice Ġstate ...", Ġtrue , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠProgress Dialog With Spinner ( this @ Base Activity , Ġ" Loading ...", Ġtrue , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! this @ Base Activity . is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( conn Stat Ġ== ĠConnection Status . CONNECTED Ġ|| Ġconn Stat Ġ== ĠConnection Status . DIS CONNECTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog ?. show ( DIS MIS S _ DIALOG _ DELAY _ MS . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog ?. setOn Cancel Listener ( cancel Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Modal Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( connection Status Modal Dialog Ġ!= Ġnull Ġ&& Ġconnection Status Modal Dialog ?. is Showing !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog ?. clear Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Status Modal Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Message ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĠToast . makeText ( this , Ġmessage , ĠToast . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Message ( string Res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĠToast . makeText ( this , Ġstring Res Id , ĠToast . LENGTH _ SHORT ). show () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimm : ĠInput Method Manager Ġ= Ġget System Service ( Activity . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġvar Ġview Ġ= Ġthis . current Focus ĊĠĠĠĠĠĠĠ Ġ// If Ġno Ġview Ġcurrently Ġhas Ġfocus , Ġcreate Ġa Ġnew Ġone , Ġjust Ġso Ġwe Ġcan Ġgrab Ġa Ġwindow Ġtoken Ġfrom Ġit ĊĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġview Ġ= ĠView ( this ) ĊĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( view . window Token , Ġ 0 ) ĊĠĠĠ Ġ} Ċ }