2014-11-29 3 views
0

Я пытаюсь создать приложение, которое просто обнаруживает определенные фразы, которые пользователь может говорить на устройстве, и действие будет делать что-то в зависимости от того, что сказал пользователь. Мне было трудно найти учебники по этой конкретной теме, поэтому, пожалуйста, помогите мне. До сих пор я создал кнопку, которая запустит намерение Recognizer, и у меня есть onActivityResult, который, я надеюсь, сможет определить, что говорит пользователь, а затем вызывает определенные функции в зависимости от фразы, которую произнес пользователь.Android Распознавание речи

public void OnClick_Speed_Detector(View v) 
{ 
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "speak up"); 
    startActivityForResult(i, 1); 

} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if(requestCode == 1 && resultCode == RESULT_OK) 
    { 
     //if user says the phrase "poptarts" 
     //call function poptart 

     //if user says the phrase "banana" 
     //call function banana 

     Toast.makeText(getApplicationContext(), "sound detected", Toast.LENGTH_LONG).show(); 
    } 
} 
+0

Хорошо, а в чем вопрос тогда? –

+0

вопрос в том, как я обнаружил, когда говорят определенные фразы ... – ssj3goku878

+0

нравится, если пользователь говорит poptarts, как я его код, чтобы приложение могло реагировать на фразу «poptarts», а не какое-то другое слово? – ssj3goku878

ответ

1

Посмотрите на это, то, как ваш код должен работать:

public void OnClick_Speed_Detector(View v) { 
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, 
    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "speak up"); 
    startActivityForResult(i, 1); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1 && resultCode == RESULT_OK) { 
     //if user says the phrase "poptarts" 
     //call function poptart 

     //if user says the phrase "banana" 
     //call function banana 
     ArrayList <String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

     ArrayList <String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 


     if (((result).equals(t1))) { 
      Intent intent = new Intent(this, * * ClassToOpen * * .class); 
      startActivity(intent); 
     } else if (((result).equals(t2))) { 
      Intent intent = new Intent(this, * * ClassToOpen * * .class); 
      startActivity(intent); 
     } 

     Toast.makeText(getApplicationContext(), "sound detected", Toast.LENGTH_LONG).show(); 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 

Положите нужную строку как t1 и t2.

Надеюсь, что это поможет, проголосуйте или согласитесь, если бы это произошло.

+0

Здравствуйте, я попытался проверить это, изменив намерения с тостами вместо того, чтобы отобразить уведомление, если слово, которое я сказал, действительно но он не работает должным образом. Heres изображение того, что было написано http://i.imgur.com/xOqoFxV.png – ssj3goku878

+0

ohk может у вас отправить весь код ***. Java, чтобы я cn нашел ошибку ur, идущую с ... :) @ ssj3goku878 –

+0

У меня на самом деле не очень много кода, у меня почти все, что я сделал с вашим кодом, но я не получаю никаких результатов. http://i.imgur.com/2IKLQNP.png Я нажимаю кнопку, чтобы активировать распознаватель голоса, и я говорю слово, которое я ввел в код, но ничего не происходит. – ssj3goku878

1

Это не то, как вы должны его использовать. Это не похоже на другие виды деятельности. Вы даже не создали SpeechRecognizer. Пожалуйста, обратитесь к документации SpeechRecognizer и см. createSpeechRecognizer() метод. Вы также увидите различные результаты для этой деятельности. Например, onError() onResults() onEndOfSpeech() и т. Д. Сначала вы должны увидеть пример. Мне жаль, что я не мог дать вам ответ, который решает вашу проблему, но ваша проблема в том, что вы ошибаетесь.

Смежные вопросы