여러 가지 옵션이있는 메뉴 활동이 있습니다. 그 중 하나는 Glass의 음성 텍스트를 사용하여 뉴스 피드에 게시하는 것입니다. 나는 https://developers.google.com/glass/develop/gdk/input/voice#starting_the_speech_recognition_activity 을 보았고 모두 구현했지만 onActivityResult 메서드는 결코 호출되지 않습니다.음성에 대해 onActivityResult가 호출되지 않았습니다. Google Glass의 의도
글래스 장치에서 메뉴에서 "새 글쓰기"를 선택할 수 있으며 음성 캡처가 나타납니다. 내가 말할 수 있고 내 연설을 화면의 텍스트로 바꿀 것입니다. 그러나 (수초를 두드 리거나 기다리는 것으로) 내가 그것을 받아들이면, 그냥 나가서 홈 화면으로 돌아 가게됩니다. onActivityResult에서 음성 텍스트 문자열을 가져올 수 있어야하고 다른 메서드 (displayPostMenu)를 호출하여 텍스트를 처리하는 다른 메뉴를 표시 할 수 있어야하지만 onActivityResult가 호출되지 않으면이를 수행 할 수 없습니다.
몇 가지 유사한 문제를 살펴 보았지만 해결 방법이 없었거나 적용 가능하지 않았습니다 ... RecognizerIntent.ACTION_RECOGNIZE_SPEECH에서 setResult()를 사용할 수 있다고 생각하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다! 내 코드의
일부 조각 :
private final int SPEECH_REQUEST = 1;
//Code to make this Activity work and the menu open...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.view_feed:
//Stuff
return true;
case R.id.new_post:
Log.i("MainMenu", "Selected new_post");
displaySpeechRecognizer();
Log.i("MainMenu", "Ran displaySpeechRecog under new_post selection");
return true;
case R.id.stop:
Activity parent = getParent();
Log.i("MainMenu", "Closing activity; parent: " + parent + "; " + hashCode());
if (parent != null && parent.getApplication() == getApplication()) {
finish();
} else {
MainMenu.close();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onOptionsMenuClosed(Menu menu) {
// Nothing else to do, closing the Activity.
finish();
}
public void displaySpeechRecognizer() {
Log.i("MainMenu", "Entered displaySpeechRecognizer");
Intent speechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
startActivityForResult(speechIntent, SPEECH_REQUEST);
Log.i("MainMenu", "Finished displaySpeechRecognizer. startActivityForResult called.");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("MainMenu", "onActivityResult entered from MainMenu");
switch (requestCode) {
case SPEECH_REQUEST:
Log.i("MainMenu", "onActivityResult enters SPEECH_REQUEST case");
if (resultCode == RESULT_OK) {
Log.i("MainMenu", "onActivityResult enters RESULT_OK for voice cap");
List<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String spokenText = results.get(0);
Log.i("MainMenu", "SpokenText:" + spokenText);
holdText = spokenText;
if (holdText != "") {
displayPostMenu();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
당신이 그 작업을 수행하는 방법의 예를 줄 수 있다고 생각합니까? 나는 그것을하는 방법을 완전히 모르겠다. – Natalie
예를 들어 답을 편집했습니다. 희망이 도움이됩니다! –