package Ġcom . baidu . car life vehicle Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Message Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . view . Surface Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat . request Permissions Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . baidu . car life . protobuf . Car life B TH fp Call Status Cover Proto . Car life B TH fp Call Status Cover Ċ import Ġcom . baidu . car life . protobuf . Car life Connect Exception Proto . Car life Connect Exception Ċ import Ġcom . baidu . car life . sdk .* Ċ import Ġcom . baidu . car life . sdk . Constants . TAG Ċ import Ġcom . baidu . car life . sdk . Constants . VALUE _ PROGRESS _ 1 0 0 Ċ import Ġcom . baidu . car life . sdk . internal . protocol . Car Life Message Ċ import Ġcom . baidu . car life . sdk . internal . protocol . Service Types Ċ import Ġcom . baidu . car life . sdk . internal . transport . Transport Listener Ċ import Ġcom . baidu . car life . sdk . receiver . Car Life Ċ import Ġcom . baidu . car life . sdk . receiver . Connect Progress Listener Ċ import Ġcom . baidu . car life . sdk . receiver . File Transfer Listener Ċ import Ġcom . baidu . car life . sdk . receiver . On Phone State ChangeListener Ċ import Ġcom . baidu . car life . sdk . receiver . view . Remote Display GL View Ċ import Ġcom . baidu . car life . sdk . util . Logger Ċ import Ġcom . baidu . car life vehicle . audio . recorder . Voice Manager Ċ import Ġcom . baidu . car life vehicle . fragment .* Ċ import Ġcom . baidu . car life vehicle . message . Msg Base Handler Ċ import Ġcom . baidu . car life vehicle . message . Msg Handler Center Ċ import Ġcom . baidu . car life vehicle . module . Music Module Ċ import Ġcom . baidu . car life vehicle . module . Nav Module Ċ import Ġcom . baidu . car life vehicle . module . Phone Module Ċ import Ġcom . baidu . car life vehicle . module . VR Module Ċ import Ġcom . baidu . car life vehicle . util . Car life Conf Util Ċ import Ġcom . baidu . car life vehicle . util . Car life Util Ċ import Ġcom . baidu . car life vehicle . util . Common Params Ċ import Ġcom . baidu . car life vehicle . util . Preference Util Ċ import Ġcom . baidu . car life vehicle . view . Car life Message Dialog Ċ import Ġcom . permission x . gu olin dev . Permission X Ċ Ċ class ĠCar life Activity Ġ: ĠAppCompatActivity (), ĠConnect Progress Listener , ĊĠĠĠ ĠTransport Listener , ĠView . OnClickListener , ĠOn Phone State ChangeListener , ĠW ir less Status Listener Ġ{ ĊĠĠĠ Ġpublic Ġvar Ġm Is Connect Exception Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Surface View : ĠRemote Display GL View ĊĠĠĠ Ġprivate Ġvar Ġm Surface : ĠSurface ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Root View : ĠViewGroup ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbt Hard KeyCode : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Vehicle Control Handler : ĠTransport Listener ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Phone Module : ĠCar Life Module ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Music Module : ĠCar Life Module ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Nav Module : ĠCar Life Module ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm VR Module : ĠCar Life Module ĊĠĠĠ Ġprivate Ġvar Ġm Car Life FragmentManager : ĠCar Life FragmentManager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Exit App Dialog : ĠCar life Message Dialog ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Has E ver Connect Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm MainActivity Handler : ĠMsg Base Handler ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Is Call Cover Show ed Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġcall Status Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġphone Num Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġphone Name Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġm Is Calling : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Is Call Com ing : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Is Init Config : ĠBoolean Ġ= Ġfalse ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġm Surface View Ġ= ĠfindViewById ( R . id . video _ surface _ view ) ĊĊĠĠĠĠĠĠĠ Ġm Root View Ġ= ĠfindViewById ( R . id . root _ view ) Ċ // Ċ // ĠĠĠĠĠĠĠ ĠPreference Util . getInstance (). init ( this @ Car life Activity ) ĊĠĠĠĠĠĠĠ Ġm Car Life FragmentManager Ġ= ĠCar Life FragmentManager ( this ) ĊĠĠĠĠĠĠĠ Ġ// Ġinitialize Ġbase fragment , Ġmust Ġbe Ġcalled Ġbefore Ġusing Ġit 's Ġsubclass ĊĠĠĠĠĠĠĠ ĠBase Fragment . init Before All ( this ) ĊĠĠĠĠĠĠĠ Ġm Car Life FragmentManager !!. show Fragment ( Launch Fragment . getInstance ()) ĊĊĠĠĠĠĠĠĠ Ġbt Hard KeyCode Ġ= ĠfindViewById ( R . id . bt _ hard ) ĊĠĠĠĠĠĠĠ Ġbt Hard KeyCode . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġm Phone Module Ġ= ĠPhone Module ( Car Life . receiver (), Ġthis ) ĊĠĠĠĠĠĠĠ Ġm Music Module Ġ= ĠMusic Module ( Car Life . receiver ()) ĊĠĠĠĠĠĠĠ Ġm Nav Module Ġ= ĠNav Module ( Car Life . receiver ()) ĊĠĠĠĠĠĠĠ Ġm VR Module Ġ= ĠVR Module ( Car Life . receiver ()) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). add Module ( m Phone Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). add Module ( m Music Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). add Module ( m Nav Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). add Module ( m VR Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). add Connect Progress Listener ( this ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). register Transport Listener ( this ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). register W ir less Status Listeners ( this ) ĊĠĠĠĠĠĠĠ Ġm Vehicle Control Handler Ġ= ĠVehicle Control Handler () ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). register Transport Listener ( m Vehicle Control Handler ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set File Transfer Listener ( File Transfer Listener Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d (" z wh ", Ġ" file >>>> >", Ġfile . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA pk Install . install A pk ( this @ Car life Activity , Ġfile . path ) ĊĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠĠĠĠĠ Ġrequest Record Permission ( Manifest . permission . RECORD _ AUDIO ) ĊĊĠĠĠĠĠĠĠ Ġrequest Permission () ĊĊĠĠĠĠĠĠĠ ĠControl Test Window . getInstance (). init ( this @ Car life Activity , Ġm Root View ) ĊĊĠĠĠĠĠĠĠ Ġ// val Ġsurface Width Ġ= Ġintent ?. getInt Extra ( Surface Request Callback . KEY _ SURFACE _ WIDTH , Ġ 0 ) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// val Ġsurface Height Ġ= Ġintent ?. getInt Extra ( Surface Request Callback . KEY _ SURFACE _ HEIGHT , Ġ 0 ) Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// if Ġ( surface Width Ġ!= Ġ 0 Ġ&& Ġsurface Height Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġm Surface View . post Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġm Surface View . on Video Size Changed ( surface Width , Ġsurface Height ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ//} ĊĊĠĠĠĠĠĠĠ Ġm MainActivity Handler Ġ= ĠMsg MainActivity Handler () ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . register MessageHandler ( m MainActivity Handler ) ĊĠĠĠĠĠĠĠ Ġ( m MainActivity Handler Ġas ĠMsg MainActivity Handler ). send Empty Message Delayed ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ CONNECT _ INIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 0 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Car Life Vehicle FragmentManager (): ĠCar Life FragmentManager ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Car Life FragmentManager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Permission () Ġ{ ĊĠĠĠĠĠĠĠ ĠPermission X . init ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . RECORD _ AUDIO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Explain Request Reason Ġ{ Ġscope , Ġdenied List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscope . show Request Reason Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdenied List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" æīĵå¼Ģ æĿĥéĻĲ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ç¡®å®ļ ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" åıĸæ¶Ī " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Ġ{ Ġall Granted , Ġgranted List , Ġdenied List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! all Granted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" æĿĥéĻĲ æľª æīĵå¼Ģ : Ġ$ den ied List ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġéħįç½® è¯Ń éŁ³ å½ķ éŁ³ çļĦ è¯·æ±Ĥ æĿĥéĻĲ ï¼Į æļĤ æĹ¶ çİ° è¿Ļæł· å¤ĦçĲĨ ï¼Į åĲİ éĿ¢ å°ģè£ħ æĪĲ ç»Łä¸Ģ çļĦ å·¥åħ· ç±» ĊĠĠĠ Ġprivate Ġfun Ġrequest Record Permission ( permission String : ĠString ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠContext Compat . check Self Permission ( this @ Car life Activity , Ġpermission String !! ) ĊĠĠĠĠĠĠĠ ĠLogger . e ( Constants . TAG , Ġ" request Permission >> >", Ġresult ) ĊĠĠĠĠĠĠĠ Ġvar Ġhas Per mis son Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġhas Per mis son Ġ= Ġif Ġ( result Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ Ġ// Ġæ ² ¡ æľī èİ·å¾Ĺ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e ( Constants . TAG , Ġ" request Permission >> >", Ġpermission String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions ( this , ĠarrayOf < String >( permission String ), Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhas Per mis son ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġm Surface View . on Destroy () ĊĠĠĠĠĠĠĠ ĠLogger . d ( Constants . TAG , Ġ" MainActivity Ġon Destroy ") ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). remove Connect Progress Listener ( this ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). unregister Transport Listener ( this ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). unregister Transport Listener ( m Vehicle Control Handler ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set File Transfer Listener ( null ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). remove Module ( m Phone Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). remove Module ( m Music Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). remove Module ( m Nav Module ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). remove Module ( m VR Module ) ĊĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). unregister W ir less Status Listeners ( this ) ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . un Register MessageHandler ( m MainActivity Handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Progress ( progress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ CONNECT _ CHANGE _ PROGRESS _ NUMBER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ== ĠVALUE _ PROGRESS _ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ CMD _ VIDEO _ EN CODER _ START ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ ĠVoice Manager . on Activity Start () ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). on Activity Started () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ ĠVoice Manager . on Activity Stop () ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). on Activity Stopped () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Auth en Failed ( context : ĠCar Life Context ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ CONNECT _ FAIL _ AUT HEN _ FAILED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Version Not Sup prt ( context : ĠCar Life Context ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ CONNECT _ FAIL _ NOT _ SUR P PORT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Est ab lished ( context : ĠCar Life Context ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ CONNECT _ STATUS _ EST AB L ISHED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Attached ( context : ĠCar Life Context ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ CONNECT _ STATUS _ CONNECTED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Re attached ( context : ĠCar Life Context ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Connection Detached ( context : ĠCar Life Context ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ CONNECT _ STATUS _ DIS CONNECTED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Receive Message ( context : ĠCar Life Context , Ġmessage : ĠCar Life Message ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( message . service Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠService Types . MSG _ CMD _ CONNECT _ EXCEPTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġmessage . proto Payload Ġas ĠCar life Connect Exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Connect Exception ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ // ĠĠĠ Ġprivate Ġval Ġde bounc er Ġ= ĠDe bounc er ( 1 0 0 0 ) Ċ // ĠĠĠ Ġprivate Ġvar Ġclick Count Ġ= Ġ 0 Ċ // ĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ): ĠBoolean Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( ev . action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! de bounc er . filter ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(++ click Count Ġ== Ġ 4 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSettings Activity :: class . java )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Count Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick Count Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġnum Click Count Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view !!. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . bt _ hard Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(++ num Click Count Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠControl Test Window . getInstance (). display Window () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠControl Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Click Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Exit App Dialog On Read Conf Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Exit App Dialog Ġ= ĠCar life Message Dialog ( this ). setTitle Text ( R . string . alert _ quit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . conf _ init _ fail ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn First Btn ClickListener Ġ{ Ġexit App () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set First Btn Text ( R . string . alert _ confirm ) ĊĠĠĠĠĠĠĠ Ġm Exit App Dialog ?. setOn Dismiss Listener ( DialogInterface . On Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Exit App Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! m Exit App Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Exit App Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexit App () Ġ{ ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). disconnect () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġandroid . os . Process . kill Process ( android . os . Process . my Pid ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Exit App Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Exit App Dialog Ġ= ĠCar life Message Dialog ( this ). setTitle Text ( R . string . alert _ quit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . alert _ quit _ app _ content ). set First Btn Text ( R . string . alert _ confirm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set First Btn TextColor High Light (). setOn First Btn ClickListener Ġ{ Ġexit App () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Second Btn Text ( R . string . alert _ cancel ) ĊĠĠĠĠĠĠĠ Ġm Exit App Dialog ?. setOn Dismiss Listener ( DialogInterface . On Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Exit App Dialog Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Exit App Dialog !!. is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Exit App Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠMsg MainActivity Handler Ġ: ĠMsg Base Handler () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Msg MainActivity Handler Ġhandle Message Ġget Ġmsg : Ġ" Ġ+ ĠCommon Params . get Msg Name ( msg . what ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ CONNECT _ INIT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Car life Conf Util . getInstance (). read Conf Status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Car life Conf Util . getInstance (). is Read Max Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" read Ġconf Ġagain ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). init () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Empty Message Delayed ( Common Params . MSG _ CONNECT _ INIT , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Exit App Dialog On Read Conf Fail () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ CONNECT _ STATUS _ CONNECTED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Connect Status ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ MAIN _ DISPLAY _ USER _ GUID E _ FRAGMENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Has E ver Connect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Car Life FragmentManager ?. show Fragment ( New UserGuide Fragment . getInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ MAIN _ DISPLAY _ MAIN _ FRAGMENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Is Init Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ éħįç½® åĬłè½½ å¤±è´¥ ï¼Į åĪĻ å»¶ æĹ¶ 5 0 0 åĨį åĽŀ æĿ¥ æī§è¡Į ãĢĤ ä¿Ŀè¯ģ éħįç½® åĬłè½½ æĪĲåĬŁ åĨį åİ» è¿ŀæİ¥ æīĭæľº ç«¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" m Is Init Config Ġis Ġ$ m Is Init Config , Ġso Ġdelay Ġ 5 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message Delay ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ MAIN _ DISPLAY _ MAIN _ FRAGMENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Car Life . receiver (). is Attached ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMsg Handler Center . dispatch Message ( Common Params . MSG _ MAIN _ DISPLAY _ TO UCH _ FRAGMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Car Life FragmentManager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Car Life FragmentManager !!. show Fragment ( Main Fragment . getInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ MAIN _ DISPLAY _ EXCEPTION _ FRAGMENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Car Life FragmentManager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Car Life FragmentManager !!. show Fragment ( Exception Fragment . getInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( TAG , Ġ" m Is Calling =$ m Is Calling ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Is Calling ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Is Call Com ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. change Tips Callback ( resources . getString ( R . string . line _ is _ coming )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. change Drawable Callback ( R . drawable . car _ ic _ incoming ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance (). set Start App Btn Hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. change Tips Callback ( resources . getString ( R . string . line _ is _ busy )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. change Drawable Callback ( R . drawable . car _ ic _ calling ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance (). set Start App Btn Hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. change Tips Callback ( resources . getString ( R . string . connect _ screen off _ hint )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance (). set Start App Btn Visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException Fragment . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. change Drawable Callback ( R . drawable . car _ ic _ click ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ MAIN _ DISPLAY _ TO UCH _ FRAGMENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRe cover Ġcall Ġstatus Ġcover Ġpage Ġonly Ġwhen Ġin Ġring ing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Car Life . receiver (). is Attached ()) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Is Call Cover Show ed Ġ&& Ġcall Status Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠCar life B TH fp Call Status Cover . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( builder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bt ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Recover Ġcall status Ġcover Ġon Ġre ception Ġof Ġforeground Ġmessage " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . state Ġ= Ġcall Status ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( phone Num )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . phone Num Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . phone Num Ġ= Ġphone Num ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( phone Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . name Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . name Ġ= Ġphone Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= ĠCar Life Message . obtain ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . MSG _ CHANNEL _ CMD , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠService Types . MSG _ CMD _ BT _ H FP _ CALL _ STATUS _ COVER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . payload ( builder . build ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar Life . receiver (). postMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Car Life FragmentManager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Car Life FragmentManager !!. show Fragment ( Touch Fragment . getInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . MSG _ CONNECT _ STATUS _ DIS CONNECTED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Connect Exception Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Car Life FragmentManager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Car Life FragmentManager !!. show Fragment ( Main Fragment . getInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e ( TAG , Ġ" handle Ġmessage Ġexception ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcare About () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ CONNECT _ INIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ CONNECT _ STATUS _ CONNECTED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ CONNECT _ STATUS _ DIS CONNECTED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ MAIN _ DISPLAY _ USER _ GUID E _ FRAGMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ MAIN _ DISPLAY _ MAIN _ FRAGMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ MAIN _ DISPLAY _ TO UCH _ FRAGMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Msg ( Common Params . MSG _ MAIN _ DISPLAY _ EXCEPTION _ FRAGMENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠLogger . e ( TAG , Ġ" ++++++++++++++++ ++++ B aid u ĠCar life ĠBegin ++++++++++++++++ ++++ ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġæł¹æį® éħįç½®æĸĩä»¶ è®¾ç½® çĽ¸åºĶ çļĦ éħįç½® ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . FEATURE _ CONFIG _ VOICE _ WAKE UP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getInt Property ( Configs . FEATURE _ CONFIG _ VOICE _ WAKE UP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . FEATURE _ CONFIG _ VOICE _ MIC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getInt Property ( Configs . FEATURE _ CONFIG _ VOICE _ MIC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . FEATURE _ CONFIG _ BL U ETO OTH _ INTERNAL _ UI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInt Property ( Configs . FEATURE _ CONFIG _ BL U ETO OTH _ INTERNAL _ UI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . FEATURE _ CONFIG _ FOCUS _ UI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getInt Property ( Configs . FEATURE _ CONFIG _ FOCUS _ UI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ WIFI _ DIRECT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ WIFI _ DIRECT _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ WIFI _ DIRECT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ TARGET _ BL U ETO OTH _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ TARGET _ BL U ETO OTH _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ TARGET _ BL U ETO OTH _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ HU _ BT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ HU _ BT _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ HU _ BT _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ HU _ BT _ MAC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ HU _ BT _ MAC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getString From Map ( Configs . CONFIG _ HU _ BT _ MAC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ LOG _ LEVEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getInt Property ( Configs . CONFIG _ LOG _ LEVEL ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ W IR LESS _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getInt Property ( Configs . CONFIG _ W IR LESS _ TYPE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ W IR LESS _ FREQ UENCY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getInt Property ( Configs . CONFIG _ W IR LESS _ FREQ UENCY ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ SAVE _ AUDIO _ FILE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getBoolean Property ( Configs . CONFIG _ SAVE _ AUDIO _ FILE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). set Config ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfig s . CONFIG _ USE _ BT _ AUDIO , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Conf Util . getInstance (). getBoolean Property ( Configs . CONFIG _ USE _ BT _ AUDIO ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġæł¹æį® æ¸ ł éģĵ åı· æŀĦå»º static Ġinfo Ġ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ ĠCar Life . receiver (). init Statistics Info ( Common Params . vehicle Channel , Ġ" 1 2 3 4 5 6 7 8 ") ĊĠĠĠĠĠĠĠ Ġm Is Init Config Ġ= Ġtrue ; ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Connect Status ( status : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Util . getInstance (). put Boolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . CONNECT _ STATUS _ SHARED _ PREFER ENCES , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommon Params . CONNECT _ STATUS , Ġstatus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e ( TAG , Ġ" save Ġconnect Ġstatus Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon StateChanged ( is Calling : ĠBoolean , Ġis Call Com ing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Is Calling Ġ= Ġis Calling ĊĠĠĠĠĠĠĠ Ġm Is Call Com ing Ġ= Ġis Call Com ing ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Connect Exception ( exception : ĠCar life Connect Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhint Res Str : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġwhen Ġ( exception . exception Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VIDEO _ PERMISSION _ DEN IED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Res Str Ġ= Ġresources . getString ( R . string . car life _ video _ permission _ den ied _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Connect Exception Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VIDEO _ EN CODER _ ERO OR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Res Str Ġ= Ġresources . getString ( R . string . car life _ phone _ not _ support _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Is Connect Exception Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VIDEO _ PAUSE _ BY _ SCREEN SHARE _ REQUEST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Res Str Ġ= Ġresources . getString ( R . string . car life _ video _ permission _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( hint Res Str Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Car Life FragmentManager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Car Life FragmentManager !!. show Fragment ( Main Fragment . getInstance ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMain Fragment . getInstance (). update Exception Tips ( hint Res Str ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Device W ir less Status ( status : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VALUE _ LOW _ POWER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Util . show Toast In UIT hread ( R . string . car life _ toast _ low _ power ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . VALUE _ NO _ WIFI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCar life Util . show Toast In UIT hread ( R . string . car life _ toast _ no _ wifi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }