Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.gridsystem.nimblehero;
- import android.content.Intent;
- import android.os.Bundle;
- import android.speech.RecognitionListener;
- import android.speech.RecognizerIntent;
- import android.speech.SpeechRecognizer;
- import android.util.Log;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by AtanasK on 6/2/2016.
- */
- public class SpeechClass implements RecognitionListener, SpeechInterface {
- private ArrayList<String> guesses;
- public SpeechRecognizer speech = null;
- private Intent recognizerIntent;
- private String LOG_TAG = "VoiceRecognitionActivity";
- private List<String> matches;
- public SpeechClass() {
- // setup na recognizer potrebni raboti
- speech = SpeechRecognizer.createSpeechRecognizer(AndroidLauncher.getAppContext());
- speech.setRecognitionListener(this);
- recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
- recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
- recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.gridsystem.nimblehero");
- recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
- recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 7);
- matches = new ArrayList<>();
- }
- @Override
- public void onReadyForSpeech(Bundle params) {
- }
- @Override
- public void onBeginningOfSpeech() {
- }
- @Override
- public void onRmsChanged(float rmsdB) {
- }
- @Override
- public void onBufferReceived(byte[] buffer) {
- }
- @Override
- public void onEndOfSpeech() {
- }
- @Override
- public void onError(int error) {
- String errorMessage = getErrorText(error);
- if (errorMessage.equals("No speech input"))
- // answerView.setText("You didn't say anything... Try again!");
- if (errorMessage.equals("No match"))
- // answerView.setText("You got it wrong... Try again!");
- Log.d(LOG_TAG, "FAILED " + errorMessage);
- }
- @Override
- public void onResults(Bundle results) {
- // Log.i(LOG_TAG, "onResults");
- matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
- //
- // for (String s : matches) {
- // if (game.checkAnswer(s)) {
- // game.scoreUp();
- // updateQuestion();
- // updateAnswer(true, s);
- // return;
- // }
- // }
- // game.missedQuestion();
- // updateAnswer(false, null);
- }
- @Override
- public void onPartialResults(Bundle partialResults) {
- }
- @Override
- public void onEvent(int eventType, Bundle params) {
- }
- public static String getErrorText(int errorCode) {
- String message;
- switch (errorCode) {
- case SpeechRecognizer.ERROR_AUDIO:
- message = "Audio recording error";
- break;
- case SpeechRecognizer.ERROR_CLIENT:
- message = "Client side error";
- break;
- case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
- message = "Insufficient permissions";
- break;
- case SpeechRecognizer.ERROR_NETWORK:
- message = "Network error";
- break;
- case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
- message = "Network timeout";
- break;
- case SpeechRecognizer.ERROR_NO_MATCH:
- message = "No match";
- break;
- case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
- message = "RecognitionService busy";
- break;
- case SpeechRecognizer.ERROR_SERVER:
- message = "error from server";
- break;
- case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
- message = "No speech input";
- break;
- default:
- message = "Didn't understand, please try again.";
- break;
- }
- return message;
- }
- @Override
- public void startSpeech() {
- speech.startListening(recognizerIntent);
- }
- @Override
- public List<String> results() {
- return matches;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment