5

Abbiamo un'applicazione demo Android (Android 4.0.3) che esegue il riconoscimento vocale come servizio e (in modo continuo) registra i risultati del riconoscimento sulla vista.È possibile avere Android Voice Recognition (come servizio personalizzato) su Google Glass?

Tutto funziona perfettamente nei nostri smartphone.

Vorremmo replicare questo scenario in un'applicazione di immersione Google Glass, ma abbiamo sempre questo messaggio di errore quando si tenta di avviare il servizio:

nessun servizio di riconoscimento vocale selezionato

ci sono alcune note limitazioni? O qualcuno ha capito come risolvere questo tipo di problema?

Grazie in anticipo

Questo è un codice significativa dell'attività:

public class MainActivity extends Activity implements Observer { 
    ... 
    @Override 
    protected void onStart() { 
     super.onStart(); 
     //Toast.makeText(this, "Hi guys", Toast.LENGTH_LONG); 
     startService(new Intent(this, SilentVoiceRecognitionService.class)); 
    } 
    ... 
} 

E questo è il codice del servizio:

public class SilentVoiceRecognitionService extends Service { 
    protected AudioManager mAudioManager; 
    protected SpeechRecognizer mSpeechRecognizer; 
    protected Intent mSpeechRecognizerIntent; 
    protected final Messenger mServerMessenger = new Messenger(new IncomingHandler(this)); 

    private Model model = Model.getInstance(); 

    static final String TAG = "SilentRecognizer"; 
    static final int MSG_RECOGNIZER_START_LISTENING = 1; 
    static final int MSG_RECOGNIZER_CANCEL = 2; 

    protected boolean mIsListening; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); 
     mSpeechRecognizer.setRecognitionListener(new SpeechRecognitionListener()); 
     mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
     mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
     mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, 
            this.getPackageName()); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.i("LocalService", "Received start id " + startId + ": " + intent); 
     // We want this service to continue running until it is explicitly 
     // stopped, so return sticky. 

     mSpeechRecognizer.startListening(mSpeechRecognizerIntent); 

     return START_STICKY; 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 

     if (mSpeechRecognizer != null) 
     { 
      mSpeechRecognizer.destroy(); 
     } 
    } 

    protected class SpeechRecognitionListener implements RecognitionListener 
    { 

     ... 
    } 


    protected static class IncomingHandler extends Handler 
    { 
     private WeakReference<SilentVoiceRecognitionService> mtarget; 

     IncomingHandler(SilentVoiceRecognitionService target) 
     { 
      mtarget = new WeakReference<SilentVoiceRecognitionService>(target); 
     } 


     @Override 
     public void handleMessage(Message msg) 
     { 
      final SilentVoiceRecognitionService target = mtarget.get(); 

      switch (msg.what) 
      { 
       case MSG_RECOGNIZER_START_LISTENING: 

        if (!target.mIsListening) 
        { 
        target.mSpeechRecognizer.startListening(target.mSpeechRecognizerIntent); 
         target.mIsListening = true; 
         //Log.d(TAG, "message start listening"); //$NON-NLS-1$ 
        } 
        break; 

       case MSG_RECOGNIZER_CANCEL: 
        target.mSpeechRecognizer.cancel(); 
        target.mIsListening = false; 
        //Log.d(TAG, "message canceled recognizer"); //$NON-NLS-1$ 
        break; 
      } 
     } 
    } 

}

+0

Hai aggiunto il tag di autorizzazione utente nel manifest di un'applicazione? –

+1

sicuro:

+1

Inoltre, è possibile avere un paio di occhiali al giorno d'oggi? Ok, dimenticalo. Penso che il modo in cui il riconoscimento vocale funziona in GG è un po 'diverso. Fare riferimento a [qui] (https://developers.google.com/glass/develop/gdk/input/voice). –

risposta

0

A partire da XE16 è ora possibile utilizzare direttamente SpeechRecognizer e ottenere i risultati tramite SpeechRecognitionListener.

Purtroppo questo non funziona ancora offline.

Problemi correlati