package Ġcom . f phoenix cor ne ae . util Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Asset Manager Ċ import Ġandroid . media . Audio Format Ċ import Ġandroid . media . Audio Manager Ċ import Ġandroid . media . Audio Track Ċ import Ġandroid . media . Audio Track . STATE _ UN INITIAL IZED Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . provider . Settings Ċ import Ġcom . f phoenix cor ne ae . ext . app Context Ċ import Ġcom . f phoenix cor ne ae . ext . audio Manager Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . Concurrent Linked Queue Ċ import Ġjava . util . concurrent . Executors Ċ Ċ /** Ċ Ġ* Ġ@ desc ï¼ļ éŁ³ é¢ĳ å·¥åħ· ç±» Ċ Ġ* Ġ@ date ï¼ļ 2 0 2 1 / 5 / 2 Ġ 1 2 : 3 9 Ċ Ġ*/ Ċ object ĠAudio Util Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Asset Manager : ĠAsset Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġsound Bytes : ĠHashMap < String , ĠByteArray > Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval Ġaudio Track Map : ĠHashMap < String , ĠAudio Track ?> Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval Ġaudio Track Using er List : ĠConcurrent Linked Queue < Audio Track > Ġ= ĠConcurrent Linked Queue () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġkn ob Audio Track : ĠAudio Track ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸Ĭ ä¸ĭ æĸĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠmContext Ġ= Ġapp Context ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éŁ³ é¢ĳ æľįåĬ¡ ĠManager ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Audio Manager Ġby Ġlazy Ġ{ ĠmContext . audio Manager Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çº¿ç¨ĭ æ±ł ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġm ThreadPool Ġby Ġlazy Ġ{ ĠExec utors . new Fixed ThreadPool ( 1 0 0 ) Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Asset Manager Ġ= ĠmContext . assets ĊĠĠĠĠĠĠĠ Ġinit Audio Track () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Audio Track () Ġ{ ĊĠĠĠĠĠĠĠ Ġm ThreadPool . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Asset Manager ?. list (" sound ") ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġread Bytes Ġ= Ġm Asset Manager ?. open (" sound /${ it }") !!. read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfrom Index Ġ= Ġresolve Header ( read Bytes ). data Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound Bytes [ it ] Ġ= Ġread Bytes . copyOf Range ( from Index Ġ+ Ġ 4 , Ġread Bytes . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple Rate Ġ= Ġ 4 8 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Config Ġ= ĠAudio Format . CHANNEL _ OUT _ STER EO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio Format Ġ= ĠAudio Format . ENCODING _ PCM _ 1 6 BIT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin BufferSize Ġ= ĠAudio Track . getMin BufferSize ( simple Rate , Ġchannel Config , Ġaudio Format ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkn ob Audio Track Ġ= ĠAudio Track ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager . STREAM _ M US IC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Format , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin BufferSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Track . MODE _ STATIC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkn ob Audio Track . set Volume ( 0 . 5 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmute System Touch () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Settings . System . can Write ( mContext )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Settings . ACTION _ MANAGE _ WRITE _ SETTINGS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" package :" Ġ+ ĠmContext . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . System . put Int ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . content Resolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . System . SOUND _ EFFECT S _ ENABLED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Audio Manager ?. unload Sound Effects () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . System . put Int ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . content Resolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . System . SOUND _ EFFECT S _ ENABLED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Audio Manager ?. unload Sound Effects () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġplay Audio ( sound Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmute System Touch () ĊĠĠĠĠĠĠĠ Ġplay By Audio Track ( sound Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Play ( sound Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( audio Track Map [ sound Name ]?. play State Ġ!= ĠSTATE _ UN INITIAL IZED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ sound Name ]?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ sound Name ]?. release () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġplay By Audio Track ( filePath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm ThreadPool . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filePath . contains (" common _ kn ob _ turn ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( audio Track Map [ filePath ] Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkn ob Audio Track . write ( sound Bytes [ filePath ] !! , Ġ 0 , Ġsound Bytes [ filePath ] !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkn ob Audio Track . play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ filePath ] Ġ= Ġkn ob Audio Track ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ filePath ]?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreload Static Data Ġ= Ġaudio Track Map [ filePath ]?. reload Static Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reload Static Data Ġ== ĠAudio Track . SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ filePath ]?. play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( audio Track Using er List . size Ġ> Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Using er List . remove (). release () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem Clock . sleep ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple Rate Ġ= Ġ 4 8 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Config Ġ= ĠAudio Format . CHANNEL _ OUT _ STER EO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio Format Ġ= ĠAudio Format . ENCODING _ PCM _ 1 6 BIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin BufferSize Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Track . getMin BufferSize ( simple Rate , Ġchannel Config , Ġaudio Format ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio Track Ġ= ĠAudio Track ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager . STREAM _ M US IC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Rate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Format , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin BufferSize , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Track . MODE _ STREAM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Using er List . add ( audio Track ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ filePath ] Ġ= Ġaudio Track ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track . play () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track . set Volume ( 1 . 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track . write ( sound Bytes [ filePath ] !! , Ġ 0 , Ġsound Bytes [ filePath ] !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track . release () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Using er List . remove ( audio Track ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Track Map [ filePath ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è§£æŀĲ å¤´ éĥ¨ ï¼Į å¹¶ èİ·å¾Ĺ æĸĩä»¶ æĮĩéĴĪ æĮĩåĲĳ æķ°æį® å¼Ģå§ĭ ä½įç½® çļĦ ĠInputStream ï¼Į è®° å¾Ĺ ä½¿çĶ¨ åĲİ éľĢè¦ģ åħ³éĹŃ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġresolve Header ( bytes : ĠByteArray ): ĠHeader Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠindexOf Ġ= Ġbytes . indexOf ( 0 x 6 4 6 1 7 4 6 1 . to Byte ()) ĊĠĠĠĠĠĠĠ Ġ// Ġæ¯ı ä½į æķ°æį® ĊĠĠĠĠĠĠĠ Ġval Ġbit Per Sample Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 3 , ĠindexOf Ġ- Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġ// Ġ åŃĹèĬĤ å¯¹ é½Ĳ ĊĠĠĠĠĠĠĠ Ġval Ġblock Align Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 5 , ĠindexOf Ġ- Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġ// Ġæ¯ı ç§Ĵ çļĦæķ°æį® ĊĠĠĠĠĠĠĠ Ġval Ġbyte Per Sec Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 9 , ĠindexOf Ġ- Ġ 5 )) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĩĩ æł· çİĩ ĊĠĠĠĠĠĠĠ Ġval Ġsample Rate Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 1 3 , ĠindexOf Ġ- Ġ 9 )) ĊĠĠĠĠĠĠĠ Ġ// Ġ éĢļ éģĵ æķ° ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 1 5 , ĠindexOf Ġ- Ġ 1 3 )) ĊĠĠĠĠĠĠĠ Ġ// Ġ æł¼å¼ı Ġtag ĊĠĠĠĠĠĠĠ Ġval Ġformat Tag Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 1 7 , ĠindexOf Ġ- Ġ 1 5 )) ĊĠĠĠĠĠĠĠ Ġ// Ġfps ĊĠĠĠĠĠĠĠ Ġval Ġbits Ġ= Ġbytes 2 Int ( bytes . copyOf Range ( indexOf Ġ- Ġ 2 1 , ĠindexOf Ġ- Ġ 1 7 )) ĊĠĠĠĠĠĠĠ Ġ/* Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" bit Per Sample :${ bit Per Sample }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" block Align :${ block Align }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" byte Per Sec :${ byte Per Sec }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sample Rate :${ sample Rate }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" channel :${ channel }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" format Tag :${ format Tag }\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" bits :${ bits }" ĊĠĠĠĠĠĠĠĠ Ġ) */ ĊĠĠĠĠĠĠĠ Ġreturn ĠHeader Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbit Per Sample , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Align , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Per Sec , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsample Rate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( channel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠAudio Format . CHANNEL _ OUT _ MON O ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠAudio Format . CHANNEL _ OUT _ STER EO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAudio Format . CHANNEL _ OUT _ STER EO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( bits ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> ĠAudio Format . ENCODING _ PCM _ 8 BIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 Ġ-> ĠAudio Format . ENCODING _ PCM _ 1 6 BIT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAudio Format . ENCODING _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠindexOf Ġ+ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠHeader Info ( ĊĠĠĠĠĠĠĠ Ġval Ġbit Per Sample : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġblock Align : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġbyte Per Sec : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġsample Rate : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġchannel Format : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġbit Format : ĠInt , ĊĠĠĠĠĠĠĠ Ġval ĠdataIndex : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġbytes 2 Int ( bytes : ĠByteArray ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ æ¯ıä¸ª byte ä¾Ŀ æ¬¡ æĲ ¬ è¿Ĳ åĪ° int çĽ¸åºĶ çļĦ ä½įç½® ĊĠĠĠĠĠĠĠ Ġbytes . forEach Indexed Ġ{ Ġindex , Ġbyte Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( byte . toInt () Ġand Ġ 0 xff Ġshl Ġindex Ġ* Ġ 8 ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }