From 8d66a9b0cbb9a79cbfea1c9a5a82abdd8558a11d Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Wed, 15 Nov 2023 10:56:16 +0800 Subject: [PATCH] =?UTF-8?q?desc:GPIO=E6=8E=A7=E5=88=B6=E7=81=AF=E5=85=89?= =?UTF-8?q?=E6=8A=A5=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../watcher/base/BaseActivity.kt | 12 ++++----- .../safetywatcher/watcher/ui/HomeActivity.kt | 1 - .../safetywatcher/watcher/utils/SoundUtils.kt | 26 ++++++++++++++++++- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt index a16a272..c056627 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt @@ -196,16 +196,13 @@ abstract class BaseActivity : AppCompatActivity() { return true } } else if (keyCode == KeyEvent.KEYCODE_F1) { - LogUtils.w("BaseActivity F1 pressed") - playSound() + LogUtils.w("BaseActivity F1 up") + SoundUtils.stopSoundIo() + return true } return super.dispatchKeyEvent(event) } - private fun playSound() { - SoundUtils.playSound() - } - private fun dealActionDown(event: KeyEvent): Boolean { val repeatCount = event.repeatCount val keyCode = event.keyCode @@ -224,6 +221,9 @@ abstract class BaseActivity : AppCompatActivity() { } } else if (keyCode == KeyEvent.KEYCODE_ENTER) { isHomeLongPress = repeatCount != 0 + } else if (keyCode == KeyEvent.KEYCODE_F1) { + LogUtils.w("BaseActivity F1 pressed") + SoundUtils.playSoundIo() } return super.dispatchKeyEvent(event) } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt index 7958c9d..0317dba 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt @@ -57,7 +57,6 @@ class HomeActivity : NoOptionsActivity() { @RequiresApi(Build.VERSION_CODES.R) override fun initView() { - SoundUtils.init(this, R.raw.sound) initTopbarHelper() HeartbeatService.actionStart(this@HomeActivity) setForCamera() diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SoundUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SoundUtils.kt index b419c0e..f536744 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SoundUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SoundUtils.kt @@ -3,6 +3,10 @@ package com.yinuo.safetywatcher.watcher.utils import android.content.Context import android.media.AudioAttributes import android.media.SoundPool +import com.common.commonlib.utils.LogUtils +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch object SoundUtils { @@ -20,7 +24,7 @@ object SoundUtils { private var soundId = -1 - fun init(context: Context, resID: Int){ + fun init(context: Context, resID: Int) { soundId = soundPool.load(context, resID, 1); // 替换为你的音效资源文件 } @@ -28,4 +32,24 @@ object SoundUtils { // 播放音效 soundPool.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f); // 参数依次为音效ID、左声道音量、右声道音量、优先级、循环次数、播放速度 } + + var soundPlaying = false + + fun playSoundIo() { + GPIOUtils.setGpioDirection(152, "out") + var gpioValue = 0 + soundPlaying = true + GlobalScope.launch { + while (soundPlaying) { + gpioValue = if (gpioValue > 0) 0 else 1 + LogUtils.w("cyy gpioValue ${gpioValue}") + GPIOUtils.setGpioValue(152, gpioValue) + delay(500) + } + } + } + + fun stopSoundIo() { + soundPlaying = false + } } \ No newline at end of file