desc:播放SOS音效
parent
3232f36ed0
commit
f24181b49b
@ -0,0 +1,77 @@
|
||||
package com.yinuo.safetywatcher.watcher.utils
|
||||
|
||||
import android.util.Log
|
||||
import java.io.File
|
||||
import java.io.FileNotFoundException
|
||||
import java.io.FileReader
|
||||
import java.io.FileWriter
|
||||
import java.io.IOException
|
||||
|
||||
|
||||
object GPIOUtils {
|
||||
private const val TAG: String = "GPIOUtils"
|
||||
private fun setGpioDirection(gpio: Int, direction: String) {
|
||||
val path = "/sys/class/gpio/gpio$gpio/direction"
|
||||
if (File(path).exists()) {
|
||||
var writer: FileWriter? = null
|
||||
try {
|
||||
writer = FileWriter(path)
|
||||
writer.write(direction)
|
||||
writer.flush()
|
||||
} catch (ex: IOException) {
|
||||
Log.d(TAG, "" + ex)
|
||||
} catch (ex: NumberFormatException) {
|
||||
Log.d(TAG, "" + ex)
|
||||
} finally {
|
||||
if (writer != null) {
|
||||
try {
|
||||
writer.close()
|
||||
} catch (ex: IOException) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setGpioValue(gpio: Int, value: Int) {
|
||||
val path = "/sys/class/gpio/gpio$gpio/value"
|
||||
if (File(path).exists()) {
|
||||
var writer: FileWriter? = null
|
||||
try {
|
||||
writer = FileWriter(path)
|
||||
writer.write(value.toString())
|
||||
writer.flush()
|
||||
} catch (ex: IOException) {
|
||||
Log.d(TAG, "" + ex)
|
||||
} catch (ex: NumberFormatException) {
|
||||
Log.d(TAG, "" + ex)
|
||||
} finally {
|
||||
if (writer != null) {
|
||||
try {
|
||||
writer.close()
|
||||
} catch (ex: IOException) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getGpioValue(gpio: Int): String? {
|
||||
val path = "/sys/class/gpio/gpio$gpio/value"
|
||||
if (File(path).exists()) {
|
||||
var reader: FileReader? = null
|
||||
try {
|
||||
reader = FileReader(path)
|
||||
val buf = CharArray(2)
|
||||
reader.read(buf, 0, 2)
|
||||
reader.close()
|
||||
return String(buf).substring(0, 2)
|
||||
} catch (e: FileNotFoundException) {
|
||||
e.printStackTrace()
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package com.yinuo.safetywatcher.watcher.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.media.AudioAttributes
|
||||
import android.media.SoundPool
|
||||
|
||||
object SoundUtils {
|
||||
|
||||
private val soundPool by lazy {
|
||||
// 创建 SoundPool
|
||||
val audioAttributes = AudioAttributes.Builder()
|
||||
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
|
||||
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
|
||||
.build()
|
||||
SoundPool.Builder()
|
||||
.setAudioAttributes(audioAttributes)
|
||||
.setMaxStreams(1) // 指定最大音效流的数量
|
||||
.build()
|
||||
}
|
||||
|
||||
private var soundId = -1
|
||||
|
||||
fun init(context: Context, resID: Int){
|
||||
soundId = soundPool.load(context, resID, 1); // 替换为你的音效资源文件
|
||||
}
|
||||
|
||||
fun playSound() {
|
||||
// 播放音效
|
||||
soundPool.play(soundId, 1.0f, 1.0f, 1, 0, 1.0f); // 参数依次为音效ID、左声道音量、右声道音量、优先级、循环次数、播放速度
|
||||
}
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue