5

サービスとして音声認識を実行するデモアンドアンドロイドアプリケーション(Android 4.0.3)があり、認識の結果がビューに(連続して)記録されます。Google GlassでAndroid Voice Recognition(カスタムサービスとして)を使用することはできますか?

すべてのスマートフォンでうまくいきます。

私たちは、Google Glassの浸アプリケーションでこのシナリオを再現したいと思いますが、私たちはサービスを開始しようとすると、私たちは常に、このエラーメッセージを持っている:

全く選択された音声認識サービスません

がいくつか知られてあります限界?あるいは、誰かにこのような問題を解決する方法を考えさせてもらえますか?

事前

のおかげでこれは活動のいくつかの重要なコードです:

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)); 
    } 
    ... 
} 

そして、これはサービスのコードです:

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

アプリケーションのマニフェストにユーザー許可タグを追加しましたか? –

+1

確かに:

+1

また、今では一対の眼鏡を持っているのですか?それを忘れて。私はGGでの音声認識の仕方は少し違うと思います。 [こちら](https://developers.google.com/glass/develop/gdk/input/voice)を参照してください。 –

答えて

0

XE16では、SpeechRecognizerを直接使用してSpeechRecognitionListenerで結果を取得できるようになりました。

残念ながら、これはまだオフラインで動作しません。

関連する問題