Launch Speech Recognizer as a background service in Google Glass

I recently updated Google Glass to the latest version of XE17. To make voice recognition using Google, we use the following Intent.

    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    startActivityForResult(intent, SPEECH_REQUEST);

However, this opens the voice recognition activity with the default microphone icon. I want to avoid this and instead run the speech recognition function as a background service in Glass.

I know how to do this on Android (mobile). However, when I tried to do the same in Glass, it did not work.

My code is as follows:

    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);        
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5); 
    sr.startListening(intent);

    class listener implements RecognitionListener          
 {
    public void onReadyForSpeech(Bundle params)
    {
        Log.d(TAG, "onReadyForSpeech");
    }
    public void onBeginningOfSpeech()
    {
        Log.d(TAG, "onBeginningOfSpeech");
    }
    public void onRmsChanged(float rmsdB)
    {
        Log.d(TAG, "onRmsChanged");
    }
    public void onBufferReceived(byte[] buffer)
    {
        Log.d(TAG, "onBufferReceived");
    }
    public void onEndOfSpeech()
    {
        Log.d(TAG, "onEndofSpeech");
    }
    public void onError(int error)
    {
        Log.d(TAG,  "error " +  error);

    }
    public void onResults(Bundle results)                   
    {
        String str = new String();
        Log.d(TAG, "onResults " + results);
        @SuppressWarnings("rawtypes")
        ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
        for (int i = 0; i < data.size(); i++){
            Log.d(TAG, "result " + data.get(i));
            str += data.get(i);

        }

    }
    public void onPartialResults(Bundle partialResults)
    {
        Log.d(TAG, "onPartialResults");
    }
    public void onEvent(int eventType, Bundle params)
    {
        Log.d(TAG, "onEvent " + eventType);
    }
      }

Can someone help me with this?

+4
source share
1 answer

Receive the package as follows:

intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());

, :

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET"/>
+1

Source: https://habr.com/ru/post/1540262/


All Articles