SpeechRecognizer实现语音输入
时间: 2023-10-09 14:15:03 浏览: 44
要实现语音输入,可以使用Android提供的SpeechRecognizer类。下面是一个简单的示例代码,可以启动语音识别并获取用户的语音输入:
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE_SPEECH_INPUT = 1000;
private Button mButton;
private TextView mTextView;
private SpeechRecognizer mSpeechRecognizer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.button);
mTextView = findViewById(R.id.text_view);
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startSpeechInput();
}
});
}
private void startSpeechInput() {
Intent intent = new 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, "Speak something...");
startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SPEECH_INPUT && resultCode == RESULT_OK && data != null) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String spokenText = result.get(0);
mTextView.setText(spokenText);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mSpeechRecognizer != null) {
mSpeechRecognizer.destroy();
}
}
}
```
在上面的代码中,我们创建了一个SpeechRecognizer对象mSpeechRecognizer,并在startSpeechInput()方法中启动语音识别Intent,并传递了一些参数。在onActivityResult()方法中,我们获取了用户输入的文本并在TextView中显示出来。
需要注意的是,在使用完SpeechRecognizer之后,应该调用它的destroy()方法释放资源。