package Ġgithub . com . vik rame zh il . dk s . view . alert Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġgithub . com . vik rame zh il . dk s . R Ċ import Ġgithub . com . vik rame zh il . dk s . view . progress . D ks Progress View Ċ import Ġgithub . com . vik rame zh il . dk s . view . progress . D ks Progress View Listener Ċ import Ġkotlinx . android . synt hetic . main . layout _ progress _ view . view .* Ċ Ċ /** Ċ Ġ* ĠD ks ĠFull ĠScreen ĠDialog Ċ Ġ* Ġ@ author Ġv ik rame zh il Ċ Ġ*/ Ċ Ċ data Ġclass ĠD ks Live Observer s ( val Ġspeech Result : ĠMutable LiveData < String >, Ġval Ġspeech Frequency : ĠMutable LiveData < Float >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġone Step Verify : ĠMutable LiveData < Boolean >, Ġval Ġreset Buttons Ġ: ĠMutable LiveData < Boolean >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe ject View : ĠMutable LiveData < Boolean >) Ċ Ċ class ĠD ks FullScreen Dialog ( private Ġval Ġd ks Progress View Layout : ĠInt , Ġprivate Ġval Ġmanager : ĠFragment Manager , Ġprivate Ġval Ġob servers : ĠD ks Live Observer s , Ġprivate Ġval Ġlistener : ĠD ks FullScreen Dialog Listener ): ĠDialog Fragment () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" FullScreen Dialog " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPER MISSION _ REQUEST _ CODE Ġ= Ġ 1 5 8 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġpermission Window Open Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Style ( STYLE _ NORMAL , ĠR . style . D ks FullScreen Dialog Style ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog View Ġ= Ġinflater . inflate ( dk s Progress View Layout , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog View Ġis ĠD ks Progress View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Progress Txt Ġ= Ġdialog View . tv _ progress _ message . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Progress View Listener ( object : ĠD ks Progress View Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ed Positive () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Success ( dialog View . tv _ progress _ message . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ed Neutral () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Retry () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ed Negative () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . onClose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Fragment From Current Stack ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . speech Result . observe ( this , ĠObserver Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Progress Message ( default Progress Txt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Progress Message ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . speech Frequency . observe ( this , ĠObserver Ġ{ Ġfrequency Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Progress Ball Frequency ( frequency ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . one Step Verify . observe ( this , ĠObserver Ġ{ Ġtrigger Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( trigger ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Positive Button Visibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Neutral Button Visibility ( View . VISIBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . reset Buttons . observe ( this , ĠObserver Ġ{ Ġreset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Positive Button Visibility ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Neutral Button Visibility ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog View . set Negative Button Visibility ( View . GONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġob servers . e ject View . observe ( this , ĠObserver Ġ{ Ġe ject Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e ject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . onClose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Fragment From Current Stack ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdialog View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġdialog ?. window ?. setLayout ( ViewGroup . LayoutParams . MATCH _ PARENT , ĠViewGroup . LayoutParams . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. window ?. add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. window ?. decor View ?. system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog ?. window ?. set Gravity ( Gravity . CENTER _ HORIZONTAL Ġor ĠGr avity . TOP ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRequest ing Ġfor Ġaudio Ġpermissions ĊĠĠĠĠĠĠĠ Ġrequest For Audio Permission () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( permission Window Open ) Ġreturn ĊĠĠĠĠĠĠĠ Ġlistener . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( permission Window Open ) Ġreturn ĊĠĠĠĠĠĠĠ Ġlistener . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dismiss ( dialog : ĠDialog Interface ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Dismiss ( dialog ) ĊĊĠĠĠĠĠĠĠ Ġlistener . onClose () ĊĠĠĠĠĠĠĠ Ġremove Fragment From Current Stack ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( dialog : ĠDialog Interface ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cancel ( dialog ) ĊĊĠĠĠĠĠĠĠ Ġlistener . onClose () ĊĠĠĠĠĠĠĠ Ġremove Fragment From Current Stack ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ) ĊĊĠĠĠĠĠĠĠ Ġpermission Window Open Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION _ REQUEST _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPermission Ġnot Ġgranted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Micro phone Permission Status ( status Given Ġ= Ġfalse , Ġrestart Speech Ops Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠPermission Ġgranted ĊĠĠĠĠĠĠĠ Ġlistener . on Micro phone Permission Status ( status Given Ġ= Ġtrue , Ġrestart Speech Ops Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġfor Ġaudio Ġpermission ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest For Audio Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Window Open Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions ( array Of ( Manifest . permission . RECORD _ AUDIO ), ĠPER MISSION _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Micro phone Permission Status ( status Given Ġ= Ġtrue , Ġrestart Speech Ops Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġthe Ġfragment Ġfrom Ġthe Ġcurrent Ġstack ĊĠĠĠĠ Ġ* Ġ@ param Ġmanual Dismiss ĠBoolean ĠThe Ġmanual Ġdismiss Ġstatus ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġremove Fragment From Current Stack ( manual Dismiss : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpending Fragment Ġ= Ġmanager . find Fragment By Tag ( TAG ) ĊĠĠĠĠĠĠĠ Ġif Ġ( pending Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġmanager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . remove ( pending Fragment ). commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( manual Dismiss ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }