【发布时间】:2022-01-22 04:32:46
【问题描述】:
实现在Java,想在Jetpack这个实现上写一个图标点击。按钮单击以显示语音到文本对话框:
mVoiceBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
speak();
}
});
主要问题是在compose中创建这个特定的Intent:
private void speak() {
//intent to show speech to text dialog
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, "Hi Speak Somethimh");
//start intent
try {
//in there was no error
//show dialog
startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT);
} catch (Exception e) {
//IF THERE WERE SOME ERROR
//GET MESSAGE OF ERROR AND SHOW
Toast.makeText(this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
//receive voice input and handle it
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
//GET TEXT ARRAY FROM VOICE INTENT
ArrayList<java.lang.String> result;
result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// SRT TO TEXT VIEW
mTextTv.setText(result.get(0));
}
break;
}
default:
}
}
【问题讨论】:
-
您是否尝试过在 Compose 中实现此功能?如果是这样,你的尝试是什么样的? :-) @Sharan
-
rememberLauncherForActivityResult我有一个关于如何使用LaunchedEffect启动的实现,但这是完全不同的目的,无法将该解决方案与所需的解决方案结合起来 -
好的。您是否有任何实际的 Compose 代码可以与我们分享,以便我们帮助您将其拼凑起来? :-)
标签: java android kotlin android-jetpack-compose