package Ġwww . fo k us . tech bytes . ui . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . speech . Recognizer Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . google . android . libraries . places . api . model . Place Ċ import Ġcom . google . android . libraries . places . widget . Autocomplete Ċ import Ġcom . google . android . libraries . places . widget . model . Autocomplete Activity Mode Ċ import Ġjava . util .* ĊĊ Ċ abstract Ġclass ĠBase Fragment < VB Ġ: ĠView Binding , ĠVM Ġ: ĠViewModel > Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠVB ? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠĠĠ Ġprivate Ġvar Ġfragment Listener : ĠFragment Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġabstract Ġval ĠviewModel : ĠVM ĊĊĠĠĠ Ġprivate Ġval ĠAUTO COMPLETE _ REQUEST _ CODE Ġ= Ġ 1 0 ĊĠĠĠ Ġprivate Ġval ĠSPE ACH _ REQUEST _ CODE Ġ= Ġ 1 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġget View Binding ( in flater , Ġcontainer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġthis . fragment Listener Ġ= Ġcontext Ġas ? ĠFragment Listener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġget View Binding ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?): ĠVB ĊĊĠĠĠ Ġfun Ġget Auto Complete ( query : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġautocomplete Ġintent . ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġcontext ?. let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuto complete . Intent Builder ( Autocomplete Activity Mode . OVER LAY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Place . Field . ID , ĠPlace . Field . NAME , ĠPlace . Field . LAT _ L NG )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInitial Query ( query ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ( it 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠAUTO COMPLETE _ REQUEST _ CODE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Speech Input () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Recognizer Intent . ACTION _ RE CO GN IZE _ SPE E CH ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe cognizer Intent . EXTRA _ LANGUAGE _ MODEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe cognizer Intent . LANGUAGE _ MODEL _ FREE _ FORM ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRe cognizer Intent . EXTRA _ LANGUAGE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocale . getDefault ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . resolve Activity ( application Context (). package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠSPE ACH _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Your ĠDevice ĠDoes n 't ĠSupport ĠSpeech ĠInput ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Bottom Bar Fab () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener ?. hide Bottom Bar Fab () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Bottom Bar Fab () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Listener ?. show Bottom Bar Fab () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoast ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġmessage , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġapplication Context (): ĠContext Ġ= Ġrequire Activity (). application Context ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ