|  |  |  | @ -7,16 +7,18 @@ import com.common.commonlib.utils.LogUtils | 
		
	
		
			
				|  |  |  |  | object SoundUtils { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private const val TYPE_SOS = 0 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private const val TYPE_WARN_HIGHT = 1 | 
		
	
		
			
				|  |  |  |  |     private const val TYPE_WARN_HIGH = 1 | 
		
	
		
			
				|  |  |  |  |     private const val TYPE_WARN_LOW = 2 | 
		
	
		
			
				|  |  |  |  |     private val soundMap = hashMapOf<Int, Boolean>( | 
		
	
		
			
				|  |  |  |  |         TYPE_SOS to false, | 
		
	
		
			
				|  |  |  |  |         TYPE_WARN_LOW to false, | 
		
	
		
			
				|  |  |  |  |         TYPE_WARN_HIGHT to false | 
		
	
		
			
				|  |  |  |  |         TYPE_WARN_HIGH to false | 
		
	
		
			
				|  |  |  |  |     ) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private const val DELAY_FREQUENCY_HIGH = 250 | 
		
	
		
			
				|  |  |  |  |     private const val DELAY_FREQUENCY_LOW = 600 | 
		
	
		
			
				|  |  |  |  |     private var soundPlaying = false | 
		
	
		
			
				|  |  |  |  |     private var currentPlayingDelay = 500 | 
		
	
		
			
				|  |  |  |  |     private var currentPlayingDelay = DELAY_FREQUENCY_HIGH | 
		
	
		
			
				|  |  |  |  |     private var soundThread: HandlerThread? = null | 
		
	
		
			
				|  |  |  |  |     private var soundHandler: Handler? = null | 
		
	
		
			
				|  |  |  |  |     var gpioValue = 0 | 
		
	
	
		
			
				
					|  |  |  | @ -29,11 +31,11 @@ object SoundUtils { | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     fun warnSound(isHigh: Boolean) { | 
		
	
		
			
				|  |  |  |  |         playSoundIo(if (isHigh) TYPE_WARN_HIGHT else TYPE_WARN_LOW) | 
		
	
		
			
				|  |  |  |  |         playSoundIo(if (isHigh) TYPE_WARN_HIGH else TYPE_WARN_LOW) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     fun warnSoundClose() { | 
		
	
		
			
				|  |  |  |  |         stopSoundIo(TYPE_WARN_HIGHT) | 
		
	
		
			
				|  |  |  |  |         stopSoundIo(TYPE_WARN_HIGH) | 
		
	
		
			
				|  |  |  |  |         stopSoundIo(TYPE_WARN_LOW) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -56,10 +58,10 @@ object SoundUtils { | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private fun getDelayTime(soundMap: HashMap<Int, Boolean>): Int { | 
		
	
		
			
				|  |  |  |  |         if (soundMap[TYPE_SOS] == true || soundMap[TYPE_WARN_HIGHT] == true) { | 
		
	
		
			
				|  |  |  |  |             return 500 | 
		
	
		
			
				|  |  |  |  |         if (soundMap[TYPE_SOS] == true || soundMap[TYPE_WARN_HIGH] == true) { | 
		
	
		
			
				|  |  |  |  |             return DELAY_FREQUENCY_HIGH | 
		
	
		
			
				|  |  |  |  |         } else if (soundMap[TYPE_WARN_LOW] == true) { | 
		
	
		
			
				|  |  |  |  |             return 700 | 
		
	
		
			
				|  |  |  |  |             return DELAY_FREQUENCY_LOW | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         return 0 | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
	
		
			
				
					|  |  |  | @ -69,17 +71,17 @@ object SoundUtils { | 
		
	
		
			
				|  |  |  |  |         soundPlaying = true | 
		
	
		
			
				|  |  |  |  |         while (soundPlaying) { | 
		
	
		
			
				|  |  |  |  |             gpioValue = if (gpioValue > 0) 0 else 1 | 
		
	
		
			
				|  |  |  |  |             LogUtils.w("cyy gpioValue ${gpioValue}, delay = $currentPlayingDelay") | 
		
	
		
			
				|  |  |  |  |             GPIOUtils.setGpioValue(140, gpioValue) | 
		
	
		
			
				|  |  |  |  |             Thread.sleep(currentPlayingDelay.toLong()) | 
		
	
		
			
				|  |  |  |  |             checkStatus() | 
		
	
		
			
				|  |  |  |  |             LogUtils.w("cyy gpioValue ${gpioValue}, delay = $currentPlayingDelay, soundPlaying = $soundPlaying") | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         GPIOUtils.setGpioValue(140, 0) | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     private fun checkStatus() { | 
		
	
		
			
				|  |  |  |  |         val finalStatus = | 
		
	
		
			
				|  |  |  |  |             (soundMap[TYPE_SOS] == true && soundMap[TYPE_WARN_LOW] == true && soundMap[TYPE_WARN_HIGHT] == true) | 
		
	
		
			
				|  |  |  |  |             (soundMap[TYPE_SOS] == true || soundMap[TYPE_WARN_LOW] == true || soundMap[TYPE_WARN_HIGH] == true) | 
		
	
		
			
				|  |  |  |  |         if (!finalStatus) { | 
		
	
		
			
				|  |  |  |  |             soundPlaying = false | 
		
	
		
			
				|  |  |  |  |         } else { | 
		
	
	
		
			
				
					|  |  |  | 
 |