2014-11-30 5 views
1

나는 아래의 코드를 사용하여 사용자가 말한 특정 단어를 앱이 인식하도록하려고하지만 어떤 이유로 그것이 전혀 작동하지 않습니다. 이것을 검토하고 무엇이 잘못되었는지 말해주십시오. 감사합니다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) 
    { 
     ArrayList<String> result = 
       data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

       if(((result).equals("orange"))) 
       { 
        Toast.makeText(getApplicationContext(), "orange", Toast.LENGTH_LONG).show(); 

       } 
       else 
        if (((result).equals("apple"))) 
       { 
        Toast.makeText(getApplicationContext(), "apple", Toast.LENGTH_LONG).show(); 
       } 

    } 
} 
+0

첫 번째로 의도 결과가 수신되는지 여부를 알려주십시오. 즉, logging 문을'onActivityResult'의 꼭대기와'startActivityForResult'의 앞에 넣으십시오. 음성 인식기 활동이 전혀 나타나지 않습니까? – jjm

+0

오, 이런, 문제가 생겼어. 결과 변수는 arraylist이지만 문자열과 비교합니다. 요소를 문자열과 비교하거나,'contains' 메소드를 사용하고 싶습니다. result.toString() 로깅을 시도하십시오 (토스트 디버깅은 자바 스크립트 경고 디버깅의 동등한 로깅 및 중단 점을 사용합니다) – jjm

+0

"result"변수의 디버그를했는데 "orange"라는 단어가 있는데 배열이 있습니다. "오렌지", "오렌지" – ssj3goku878

답변

2

문제가 테스트 할 것입니다 RecognizerIntent을 트리거 온 클릭하면 ArrayList에 == 그렇지 가능성 (String 형의 ArrayList에 여러 개의 문자열을 포함) 할 수있는 문자열,

대신 :

if ((result).equals("orange")) {} 

시도 :

if ((result).contains("orange")) {} 

이 코드는 ArrayList의 모든 인덱스를 살펴보고 그 중 하나의 인덱스가 "주황색"인지 여부를 결정합니다. 어떤 것이라도 반환한다면

true 

... 그리고 if 문을 실행할 것입니다! 희망이 도움이됩니다!