我正在尝试实施
android.speech
在表面视图中,但我无法弄清楚如何使用
新意图(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
在案例
中MotionEvent.ACTION_DOWN:
任何帮助都将受到赞赏n.n
我已经看过这篇文章“Speech Recognition in Surface View [android]”,但它并没有完全回答我的问题u.u
答案 0 :(得分:0)
您可以编写自己的RecognitionListener实现。
以下是在启动时立即识别语音的Activity的示例。如果您在SurfaceView中执行此操作,则需要在创建语音识别器时传递SurfaceView的上下文。
public class BackgroundListenerTest extends Activity implements RecognitionListener {
/** Text display */
private TextView blurb;
/** Parameters for recognition */
private Intent recognizerIntent;
/** The ear */
private SpeechRecognizer recognizer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.speech);
blurb = (TextView) findViewById(R.id.blurb);
recognizer = SpeechRecognizer.createSpeechRecognizer(this);
recognizer.setRecognitionListener(this);
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.example.yourpackage");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
recognizer.startListening(recognizerIntent);
}
@Override
public void onBeginningOfSpeech() {
blurb.append("[");
}
@Override
public void onBufferReceived(byte[] arg0) {
}
@Override
public void onEndOfSpeech() {
blurb.append("] ");
}
@Override
public void onError(int arg0) {
}
@Override
public void onEvent(int arg0,
Bundle arg1) {
}
@Override
public void onPartialResults(Bundle arg0) {
}
@Override
public void onReadyForSpeech(Bundle arg0) {
blurb.append("> ");
}
@Override
public void onResults(Bundle bundle) {
ArrayList<String> results = bundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
blurb.append(results.toString() + "\n");
recognizer.startListening(recognizerIntent);
}
@Override
public void onRmsChanged(float arg0) {
}
}