package Ġcom . s het j . di yal bu me . bluetooth Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . bluetooth . Bluetooth Gatt Ċ import Ġandroid . widget . TextView Ċ import Ġcom . cl j . fast ble . B le Manager Ċ import Ġcom . cl j . fast ble . callback . B le Gatt Callback Ċ import Ġcom . cl j . fast ble . callback . B le M tu Changed Callback Ċ import Ġcom . cl j . fast ble . callback . B le Scan Callback Ċ import Ġcom . cl j . fast ble . data . B le Device Ċ import Ġcom . cl j . fast ble . exception . B le Exception Ċ import Ġcom . t br uy elle . rx permissions 2 . Rx Permissions Ċ import Ġme . s het j . base . base . BaseModel Ċ import Ġme . s het j . base . base . Base Presenter Ċ import Ġme . s het j . base . base . I View Ċ import Ġme . s het j . base . tools . app . Ar ms Utils Ċ import Ġme . s het j . base . tools . app . Ar ms Utils . Companion . getMessage ĊĊ Ċ class ĠBluetooth Presenter ( view : I View ) Ġ: ĠBase Presenter < BaseModel >( view ) Ġ{ ĊĊĊĠĠĠ Ġfun Ġsetting ( ble Device : ĠB le Device ?, mt u Ġ: Int ){ ĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). set M tu ( ble Device , Ġmt u , Ġobject Ġ: ĠB le M tu Changed Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Set MT U Failure ( exception : ĠB le Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® MT U å¤±è´¥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon M tu Changed ( mt u : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġè®¾ç½® MT U æĪĲåĬŁ ï¼Į å¹¶ èİ·å¾Ĺ å½ĵåīį è®¾å¤ĩ ä¼łè¾ĵ æĶ¯æĮģ çļĦ MT U åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Search ( textView : ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). scan ( object Ġ: ĠB le Scan Callback (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scan Finished ( scan Result List : ĠMutable List < B le Device > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscan Result List ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . update View ( getMessage ( 1 , scan Result List )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scan Started ( success : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" å¼Ģå§ĭ æĲľç´¢ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc anning ( ble Device : ĠB le Device ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconnect ( item : ĠB le Device ?) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). connect ( item , object Ġ: B le Gatt Callback (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Connect () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" å¼Ģå§ĭ è¿ŀæİ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dis Connected ( isActive Dis Connected : ĠBoolean , Ġdevice : ĠB le Device ?, Ġg att : ĠBluetooth Gatt ?, Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" Ġ è¿ŀæİ¥ ä¸Ń æĸŃ Ġ= isActive Dis Connected Ġ= Ġ${ isActive Dis Connected } è¡¨ç¤º æĺ¯åĲ¦ æĺ¯ ä¸» åĬ¨ è°ĥçĶ¨ äºĨ æĸŃ å¼Ģ è¿ŀæİ¥ æĸ¹æ³ķ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connect Success ( ble Device : ĠB le Device ?, Ġg att : ĠBluetooth Gatt ?, Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" è¿ŀæİ¥ æĪĲåĬŁ Ġ= Ġ${ ble Device ?. name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connect Fail ( ble Device : ĠB le Device ?, Ġexception : ĠB le Exception ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" è¿ŀæİ¥ å¤±è´¥ Ġ= Ġ${ ble Device ?. name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠéĢļè¿ĩ çī© çĲĨ åľ°åĿĢ è¿ŀæİ¥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconnect ( mac : ĠString ?) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). connect ( mac , object Ġ: B le Gatt Callback (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Connect () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" å¼Ģå§ĭ è¿ŀæİ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dis Connected ( isActive Dis Connected : ĠBoolean , Ġdevice : ĠB le Device ?, Ġg att : ĠBluetooth Gatt ?, Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" Ġ è¿ŀæİ¥ ä¸Ń æĸŃ Ġ= isActive Dis Connected Ġ= Ġ${ isActive Dis Connected } è¡¨ç¤º æĺ¯åĲ¦ æĺ¯ ä¸» åĬ¨ è°ĥçĶ¨ äºĨ æĸŃ å¼Ģ è¿ŀæİ¥ æĸ¹æ³ķ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connect Success ( ble Device : ĠB le Device ?, Ġg att : ĠBluetooth Gatt ?, Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" è¿ŀæİ¥ æĪĲåĬŁ Ġ= Ġ${ ble Device ?. name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connect Fail ( ble Device : ĠB le Device ?, Ġexception : ĠB le Exception ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr ms Utils . makeText (" è¿ŀæİ¥ å¤±è´¥ Ġ= Ġ${ ble Device ?. name }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åģľæŃ¢ æī«æıı ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). cancel Scan (); ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæ¸ ħ ç©º ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). destroy (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĸŃ å¼Ģ ä¸Ģä¸ª è®¾å¤ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbreak B Le ( ble Device : ĠB le Device ? ){ ĊĠĠĠĠĠĠĠ ĠB le Manager . getInstance (). disconnect ( ble Device ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Per ( rx Permissions : ĠRx Permissions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrx Permissions . request Each ( Manifest . permission . ACCESS _ F INE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġpermission Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( permission . gr anted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠçĶ¨æĪ· å·²ç»ı åĲĮ æĦı è¯¥ æĿĥéĻĲ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( permission . should Show Request Permission R ationale ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠçĶ¨æĪ· æĭ Ĵ ç»Ŀ äºĨ è¯¥ æĿĥéĻĲ ï¼Į æ²¡æľī éĢī ä¸Ń ãĢ İ ä¸į åĨį è¯¢ éĹ® ãĢ ı ï¼Ī Never Ġask Ġagain ï¼ī , éĤ£ä¹Ī ä¸ĭ æ¬¡ åĨį æ¬¡ åĲ¯åĬ¨ æĹ¶ ï¼Į è¿ĺ ä¼ļ æıĲç¤º è¯·æ±Ĥ æĿĥéĻĲ çļĦ å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠçĶ¨æĪ· æĭ Ĵ ç»Ŀ äºĨ è¯¥ æĿĥéĻĲ ï¼Į å¹¶ä¸Ķ éĢī ä¸Ń ãĢ İ ä¸į åĨį è¯¢ éĹ® ãĢ ı ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ