package Ġapp . p izz ab utton . android . phone . fragments Ċ Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġapp . p izz ab utton . android . common . P izza Call Interface Ċ import Ġapp . p izz ab utton . android . common . P izza Finder Ċ import Ġapp . p izz ab utton . android . common . P izza Order er Ċ import Ġapp . p izz ab utton . android . phone . Build Config Ċ import Ġapp . p izz ab utton . android . phone . R Ċ import Ġapp . p izz ab utton . android . phone . view models . User ViewModel Factory Ċ import Ġapp . p izz ab utton . android . phone . adapters . Order Adapter Ċ import Ġapp . p izz ab utton . android . phone . databinding . Fragment Home Binding Ċ import Ġapp . p izz ab utton . android . phone . view models . User ViewModel Ċ import Ġcom . microsoft . cognit ives ervices . speech . Speech Config Ċ import Ġcom . microsoft . cognit ives ervices . speech . Speech Recognizer Ċ import Ġjava . util .* Ċ import Ġkotlin . concurrent . thread Ċ Ċ private Ġval ĠTAG Ġ= ĠHome Fragment :: class . java . simple Name Ċ Ċ class ĠHome Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Home Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser ViewModel : ĠUser ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser ViewModel Factory : ĠUser ViewModel Factory ĊĊĠĠĠ Ġprivate Ġvar Ġspeech Recognizer : ĠSpeech Recognizer ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpizza Order er : ĠP izza Order er ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Volume On Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Mic On Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Home Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġuser ViewModel Factory Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser ViewModel Factory ( Home Fragment Args . from Bundle ( require Arguments ()). user . id ) ĊĠĠĠĠĠĠĠ Ġuser ViewModel Ġ= ĠViewModel Provider ( this , Ġuser ViewModel Factory ). get ( User ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠOrder Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . rv Order History . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġsubscribe Ui ( adapter ) ĊĊĠĠĠĠĠĠĠ Ġstart Speech Recognition () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Default P izza . paint Flags Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Default P izza . paint Flags Ġor ĠPaint . UNDER LINE _ TEXT _ FLAG ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Address . paint Flags Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Address . paint Flags Ġor ĠPaint . UNDER LINE _ TEXT _ FLAG ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Order . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Order () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġib Volume . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Volume On Ġ= Ġ! is Volume On ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġib Volume . background Tint List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Volume On ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color Secondary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . red _ light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġib Volume . setImage Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Volume On ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . volume _ on ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . volume _ off ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġib Mic . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Mic On Ġ= Ġ! is Mic On ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpizza Order er ?. toggle Mic ( is Mic On ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġib Mic . background Tint List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor State List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Volume On ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color Secondary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . red _ light ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġib Mic . setImage Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Mic On ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . mic _ on ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . mic _ off ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO : ĠClean Ġup Ġusing Ġcor outines ĊĠĠĠ Ġprivate Ġfun Ġsubmit Order () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpizza Finder Ġ= ĠP izza Finder ( require Context (). application Context ) ĊĠĠĠĠĠĠĠ Ġpizza Finder . get Nearest P izza ( user ViewModel . user LiveData . value !!. address ) Ġ{ Ġclosest Store Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Closest Ġpizza Ġstore : Ġ$ closest Store ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpizza Order er Ġ= ĠP izza Order er ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ViewModel . user LiveData . value !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclosest Store !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠP izza Call Interface Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connected () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . card Active Order . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Recognizer ?. start Continuous Recognition Async () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Disconnected () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . card Active Order . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeech Recognizer ?. stop Continuous Recognition Async () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpizza Order er ?. order P izza ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui ( adapter : ĠOrder Adapter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser ViewModel . user LiveData . observe ( view Lifecycle Owner ) Ġ{ Ġnew User Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Default P izza . text Ġ= Ġnew User . default P izza ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Address . text Ġ= Ġnew User . address ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( new User . order History ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Speech Recognition () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġspeech Config Ġ= ĠSpeech Config . from Subscription ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Config . AZURE _ SUB SCRIPTION _ KEY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Config . AZURE _ SERVICE _ REGION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġspeech Recognizer Ġ= ĠSpeech Recognizer ( speech Config ) ĊĠĠĠĠĠĠĠ Ġspeech Recognizer ?. re cogn izing ?. addEventListener Ġ{ Ġ_, Ġspeech Recognition EventArgs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( TAG , Ġ" Re cogn izing : Ġ${ speech Recognition EventArgs . result . text }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Call Transcript . text Ġ= Ġspeech Recognition EventArgs . result . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġspeech Recognizer ?. stop Continuous Recognition Async () ĊĠĠĠ Ġ} Ċ }