アプリから RecognizerIntent を呼び出して、特定の ID に関連付けられた結果を取得しようとしています。結果のエクストラで返されるようにIDを渡す方法を理解するのに苦労しています。
最初に、次のようなことを試しました。
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
intent.putExtra(TasksDbAdapter.KEY_ROWID,taskId);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, RESULT_SPEECH);
残念ながら、このインテントに追加されたエクストラは onActivityResult に渡されるバンドルには含まれていません
ドキュメントを見ると、EXTRA_RESULTS_PENDINGINTENT_BUNDLE というフィールドがあり、私がやりたいことができるようです。しかし、それを適切に実装する方法を理解できませんでした。
これが私の最新の試みです:
Intent pending = new Intent(v.getContext(),Main.class);
pending.putExtra(TasksDbAdapter.KEY_ROWID, itId);
PendingIntent pIntent = PendingIntent.getActivity(v.getContext(),RESULT_SPEECH,pending,0);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(RecognizerIntent.EXTRA_RESULTS_PENDINGINTENT,pIntent);
intent.putExtra(RecognizerIntent.EXTRA_RESULTS_PENDINGINTENT_BUNDLE,pending.getExtras());
startActivityForResult(intent, RESULT_SPEECH);
残念ながら、これは機能しません。現在、OnActivityResult は常に -1 ではなく 0 の resultCode を受け取ります (つまり、RESULT_OK)。
誰かが私を例の方向に向けたり、IDを設定してスピーチからテキストへの結果でそれを受け取るという目標を達成するためにここで何をする必要があるかを理解するのを手伝ってくれますか?