我正在为游戏制作者制作演讲文本/文本到语音扩展:工作室和文本到语音的工作完美,(check my android apk out你会看到文字到语音 - 完美,语音如果没有我的Log.i条目(我在调试窗口中放入onActivityResult方法),就会显示onActivityResult方法的结果,而不是从onActivityResult方法获取结果。你们任何人都可以帮我解释原因吗?我已经尝试了以下无数种不同的方法,但没有运气,我已经在这里查看了100个与onActivityResults有关的线程,并试图实现他们的解决方案(但是当组合时要么不能设置相同的java)与游戏制作者,或者gm:s使用的跑步者图书馆不兼容或者某些东西会有效)我做错了什么?我还查看了一个扩展程序,该扩展程序与使用EXTRA的意图触发的onActivityResult一起工作(扩展名是从Android设备中挑选媒体文件),我尝试设置它,就像他们做的那样,除了使用我的RecognizerIntent,但是它仍然不能用于语音识别,这是游戏制作者跑步者图书馆没有设置处理的东西吗?返回语音数据的on活动结果与从所选图像返回数据有什么不同?在这种情况下,他们都需要一个请求代码,一个结果代码和带有额外内容的意图数据,所以我不知道这里发生了什么,为什么它不起作用。还有一些技术文档,你可以指点我描述GM:S&s的跑步者图书馆及其运作方式? 这里是我如何设置它的相关代码:
GAMEMAKER(GML) 鼠标左键按下事件:
getMic();
EXTENSION(Java)的 拿麦克风列出:
public void getMic() {
Log.i("yoyo", "Listening for speech");
try {
j = new Intent();
j.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
j.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
j.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say something");
j.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
RunnerActivity.CurrentActivity.startActivityForResult(j, 100);
Log.i("yoyo", "send to onActivityResult, Data: " + String.valueOf(j));
} catch (ActivityNotFoundException a) {
Log.i("yoyo", "Your device doesn't support Speech Recognition");
}
}
谷歌现在说话对话框弹出,我说,它发出哔哔声确认我说话并消失,因为它应该
EXTENSION(Java)的 通过发言获得我们的结果并在内部保存:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("yoyo", "onActivityResult, requestCode: " + requestCode + ", resultCode: " + resultCode);
(RunnerActivity.CurrentActivity).onActivityResult(requestCode, resultCode, data);
if(requestCode == 100){
if (resultCode == RESULT_OK && data != null) {
ArrayList<String> res = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
holdForGMS = String.valueOf(res.get(0));
editor.putString(GETMYSPEECH, holdForGMS).apply();
}
}
}
GAMEMAKER(GML)
从内存GMS端检索结果,在发言后触发的警报事件中:
if global.isSpeaking=1 findMySpeech();
global.isSpeaking=0;
EXTENSION(Java)的
findMySpeach方法:
public void findMySpeech() {
String gmsar = preferences.getString(GETMYSPEECH,"");
Log.i("yoyo", "Spoken words- " + gmsar);
recognition(gmsar);
}
aaaaannnd它已经消失了。日志结果显示它得到了一个结果(得到活动结果-1)但从未触发onActivityResult,当然也没有将结果保存在首选项编辑器中,这里是日志和流程图: