我已经查看了this问题的答案,但作为我对Android编程的新手,它对我的帮助并不大。如果有人能以愚蠢的方式帮助我,我将非常感激。
因此,我想让用户使用键盘或使用内置语音识别(显示在键盘中)来输入数据。但是,如果用户使用语音识别,我如何同时保存音频文件?
(我想将音频文件保存在数据库中,但我想我应该单独研究这个问题。现在它已经足够以某种方式访问音频文件了。)
所以在我的MainActivity()中,我有一个fab按钮来向数据库添加一个条目:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, AddEditActivity.class);
i.putExtra("EXTRA_ENTRY_ID", "null");
startActivity(i);
}
这会将您发送到AddEditActivity(),其中包含一个填写表单,可以在其中进行语音识别(除非用户选择仅使用键盘进行编写)。
那么可以使用链接问题中的代码(见下文)吗?如果是这样,我该把它放在哪里,如何在我的项目中应用它?
public void startSpeechRecognition() {
// Fire an intent to start the speech recognition activity.
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
// secret parameters that when added provide audio url in the result
intent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR");
intent.putExtra("android.speech.extra.GET_AUDIO", true);
startActivityForResult(intent, "<some code you choose>");
}
// handle result of speech recognition
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// the resulting text is in the getExtras:
Bundle bundle = data.getExtras();
ArrayList<String> matches = bundle.getStringArrayList(RecognizerIntent.EXTRA_RESULTS)
// the recording url is in getData:
Uri audioUri = data.getData();
ContentResolver contentResolver = getContentResolver();
InputStream filestream = contentResolver.openInputStream(audioUri);
// TODO: read audio file from inputstream
}
使用自定义Android键盘here时,还有语音识别代码,但我不知道如何调整它以保存音频数据。