Android中实现按钮点击打开语音识别功能并查询,kotlin语言
时间: 2023-06-13 21:05:06 浏览: 175
在 Android 中实现按钮点击打开语音识别功能并查询,可以通过以下步骤实现:
1. 在 build.gradle 文件中添加依赖
```
dependencies {
implementation 'com.google.android.gms:play-services-speech:15.0.1'
}
```
2. 在布局文件中添加一个按钮
```xml
<Button
android:id="@+id/btn_speech_to_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="语音识别" />
```
3. 在 Kotlin 代码中添加以下代码
```kotlin
import android.content.ActivityNotFoundException
import android.content.Intent
import android.os.Bundle
import android.speech.RecognizerIntent
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity() {
private val REQUEST_CODE_SPEECH_INPUT = 100
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.btn_speech_to_text)
button.setOnClickListener {
startSpeechToText()
}
}
private fun startSpeechToText() {
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
intent.putExtra(
RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
)
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault())
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "请说话")
try {
startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT)
} catch (e: ActivityNotFoundException) {
Toast.makeText(this, "不支持语音识别功能", Toast.LENGTH_SHORT).show()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
REQUEST_CODE_SPEECH_INPUT -> {
if (resultCode == RESULT_OK && data != null) {
val result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
val query = result[0]
// TODO: 在这里进行查询操作
}
}
}
}
}
```
在上面的代码中,我们首先在 onCreate 方法中获取到按钮,并设置点击事件,当按钮被点击时,会调用 startSpeechToText 方法。在 startSpeechToText 方法中,我们创建一个 RecognizerIntent 对象,配置语音识别相关的参数,并使用 startActivityForResult 方法启动语音识别。当语音识别完成后,会调用 onActivityResult 方法,在这个方法中,我们可以获取到用户说的话,然后进行查询操作。
阅读全文