package Ġtk . k ik t . bluetooth manager . handler . normal Ċ Ċ import Ġtk . k ik t . bluetooth manager . ext . ui Thread Ċ import Ġtk . k ik t . bluetooth manager . handler . Bluetooth Handler Ċ import Ġtk . k ik t . bluetooth manager . handler . Bluetooth Type Ċ import Ġtk . k ik t . bluetooth manager . handler . Power Type Ċ import Ġtk . k ik t . bluetooth manager . handler . type . Weight Platform DeviceType Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util . concurrent . locks . Lock Ċ import Ġjava . util . concurrent . locks . Re entrant Lock Ċ import Ġkotlin . concurrent . with Lock Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġc ai Ġon Ġ 2 0 1 7 / 1 2 / 1 4 . Ċ Ġ* Ġæ Ļ ® éĢļ èĵĿ çī Ļ çĶµ åŃĲ ç§ ¤ Ġ 8 ä½į çīĪ Ċ Ġ*/ Ċ object ĠWeight Normal Bluetooth Handler Ġ: ĠAbstract Normal Bluetooth Handler (), ĠBluetooth Handler Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġtype () Ġ= ĠWeight Normal Type ĊĊĠĠĠ Ġobject ĠWeight Normal Type Ġ: ĠBluetooth Type Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġdevice Type Ġ= ĠWeight Platform DeviceType ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġpower Type Ġ= ĠPower Type . NORMAL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconvert Msg StringTo ByteArray ( msg : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmsg . toByteArray ( Charset . forName (" gb k ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlist : ĠArrayList < Byte > Ġ= ĠArrayList () ĊĊĠĠĠ Ġprivate Ġval Ġlock : ĠLock Ġ= ĠRe entrant Lock () ĊĊĠĠĠ Ġoverride Ġfun Ġon Read ( byteArray : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlock . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( byteArray . to Mutable List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . size Ġ>= Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweight String Ġ= Ġlist . toByteArray (). toString ( Charset . forName (" gb k ")). trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¸ļåĬ¡ éĢ»è¾ĳ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceive Weight Listener ?. on Receive Weight ( weight String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweight Listener Exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Receive Weight ( weight String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Receive Weight Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Receive Weight ( msg : ĠString ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġreceive Weight Listener : ĠOn Receive Weight Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġreceiver Weight Listener List Ġ= Ġarray ListOf < On Receive Weight Listener >() ĊĊĠĠĠ Ġprivate Ġvar Ġweight Lock : ĠLock Ġ= ĠRe entrant Lock () ĊĊĠĠĠ Ġfun Ġadd Receive Weight Listener ( receive Weight Listener : ĠOn Receive Weight Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweight Lock . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Weight Listener List . add ( receive Weight Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Receive Weight Listener ( receive Weight Listener : ĠOn Receive Weight Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweight Lock . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Weight Listener List . remove ( receive Weight Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġweight Listener Exec ( action : Ġ( receive Weight Listener : ĠOn Receive Weight Listener ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweight Lock . with Lock Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Weight Listener List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }