2013-02-01 2 views
0

Android에서 SpeechRecognizer 클래스를 사용하여 음성 인식을 시도하고 RecognitionListener에 영향을 주려고합니다.Android 리스너 음성 인식이 호출되지 않았습니다.

문제 : 영향을받는 수신기가 호출되지 않습니다.

package com.example.testvoicepaper; 

import java.util.ArrayList; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.speech.RecognitionListener; 
import android.speech.RecognizerIntent; 
import android.speech.SpeechRecognizer; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnKeyListener; 
import android.view.View.OnTouchListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

public int VOICE_RECOGNITION_REQUEST_CODE = 1; 
private Button launchRecognition; 
private TextView textRecognised; 
private ImageView picture; 
private SpeechRecognizer sr; 
private Context context; 
private MyRecognitionListener listener; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    textRecognised = (TextView) findViewById(R.id.textRecognised); 
    launchRecognition = (Button) findViewById(R.id.launchRecognition); 
    picture = (ImageView) findViewById(R.id.picture); 
    context = this; 

    sr = SpeechRecognizer.createSpeechRecognizer(getApplicationContext()); 
    listener = new MyRecognitionListener(); 
    sr.setRecognitionListener(listener); 

    launchRecognition.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      switch (event.getAction()) { 

      case MotionEvent.ACTION_DOWN: { 
       sr.startListening(RecognizerIntent.getVoiceDetailsIntent(context)); 
       listener.onBeginningOfSpeech(); 
       break; 
      } 

      case MotionEvent.ACTION_UP: { 
       listener.onEndOfSpeech(); 
       sr.stopListening(); 
       break; 
      } 
      } 
      return false; 

     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

class MyRecognitionListener implements RecognitionListener { 

    @Override 
    public void onBeginningOfSpeech() { 
     Log.d("Speech", "onBeginningOfSpeech"); 
    } 

    @Override 
    public void onBufferReceived(byte[] buffer) { 
     Log.d("Speech", "onBufferReceived"); 
    } 

    @Override 
    public void onEndOfSpeech() { 
     Log.d("Speech", "onEndOfSpeech"); 
    } 

    @Override 
    public void onError(int error) { 
     Log.d("Speech", "onError" + error); 
    } 

    @Override 
    public void onEvent(int eventType, Bundle params) { 
     Log.d("Speech", "onEvent"); 
    } 

    @Override 
    public void onPartialResults(Bundle partialResults) { 
     Log.d("Speech", "onPartialResults"); 
    } 

    @Override 
    public void onReadyForSpeech(Bundle params) { 
     Log.d("Speech", "onReadyForSpeech"); 
    } 


    @Override 
    public void onResults(Bundle results) { 
     Log.d("Speech", "onResults"); 
     ArrayList strlist = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); 
     for (int i = 0; i < strlist.size();i++) { 
      Log.d("Speech", "result=" + strlist.get(i)); 
     } 
    } 

    @Override 
    public void onRmsChanged(float rmsdB) { 
     Log.d("Speech", "onRmsChanged"); 
    } 

} 
} 

는 그것은 beginningOfSpeech()와 endOfSpeech()하지만 결코 리스너 함수를 호출 : 여기

내 주요 활동의 코드입니다.

+0

답변을 얻었습니까? 나는 똑같은 문제를 겪고있다. –

답변

0

이것은 당신은 당신의 MainActivity에 RecognitionListener를 구현하는 대신 시도 this class

0

같은 더 시작 물건에 대한

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, prompt); 

체크 아웃 GAST 같은 것을 원하는

RecognizerIntent.getVoiceDetailsIntent(context)) 

를 사용하는 잘못된 Intent입니다 MyRecognitionListener를 생성합니다.

1

앱의 RECORD_AUDIO 권한이 사용 설정되어 있는지 확인하십시오.

관련 문제