kotlin 检测用户是否使用Manifest.permission.RECORD_AUDIO权限讲话

kpbwa7wx  于 2023-03-19  发布在  Kotlin
关注(0)|答案(1)|浏览(156)

我有一个用例,如如果用户说话,我必须显示一些波形图标,用户停止说话时,波形图标必须消失,我如何检测用户是否在说话?请帮助我

override fun onResume() {
        checkValue(recorder.maxAmplitude);
    }
    fun checkValue(amplitude: Int) {
        var amplitude = amplitude
        try {
            if (amplitude > 1000) {
                amplitude = recorder.getMaxAmplitude()
                Thread.sleep(2000)
                isUserSpeaking.value = true
                Toast.makeText(this,"User Speaking", Toast.LENGTH_LONG).show()
            } else if (isUserSpeaking.value) {
                Toast.makeText(this,"User Speaking else if", Toast.LENGTH_LONG).show()
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
jobtbby3

jobtbby31#

如果您使用MediaRecorder录制音频,您可以使用MediaRecorder.getMaxAmplitude定期请求振幅。

fun checkValue(amplitude: Int) {
    var amplitude = amplitude
    try {
        if (amplitude > 1000) {
            amplitude = recorder.getMaxAmplitude()
            Thread.sleep(2000)
            isUserSpeak = true
        } else if (isUserSpeak) {
            Log.d("TAG", "Stop")
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
}

使用这个函数

checkValue(recorder.getMaxAmplitude());

相关问题