2016-05-07 8 views
3

私のアプリで音声認識ダイアログのスタイルを変更してカスタマイズする方法はありますか?音声認識ダイアログをカスタマイズする

:googleロゴやテキストを変更します。

私はこのコードを使用していますが、それは完了ですか? public void onReadyForSpeech(バンドルパラメータ){ proccessTXT.setText( "今すぐ話す!"); }

@Override 
public void onBeginningOfSpeech() { 

} 

@Override 
public void onRmsChanged(float rmsdB) { 

} 

@Override 
public void onBufferReceived(byte[] buffer) { 

} 

@Override 
public void onEndOfSpeech() { 
    proccessTXT.setText("Waiting"); 
} 

@Override 
public void onError(int error) { 
    proccessTXT.setText(R.string.toast_disconnect); 
} 

@Override 
public void onResults(Bundle results) { 
     match_text_dialog = new Dialog(MainActivity.this); 
     match_text_dialog.setContentView(R.layout.dialog_maches_flag); 
     match_text_dialog.setTitle(R.string.selection_list); 
     textlist = (ListView) match_text_dialog.findViewById(R.id.list); 
     matches_text = getIntent().getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, matches_text); 
     textlist.setAdapter(adapter); 
     textlist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 

      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 

       type_texts = matches_text.get(position); 

       speech_text.append(type_texts + " "); 

       match_text_dialog.hide(); 

       // speech_text.setCustomSelectionActionModeCallback(new SelectText()); 
       actionMode = MainActivity.this.startActionMode(new SelectText()); 
      } 
     }); 
     match_text_dialog.show();// show dialog 

} 

@Override 
public void onPartialResults(Bundle partialResults) { 

} 

これはLogCatである:あなたが必要とここ

SpeechRecognizer speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); 
speechRecognizer.setRecognitionListener(this); 
Intent speechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
speechIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName()); 
speechRecognizer.startListening(speechIntent); 

を必要とするものは何でもダイアログあなたは(UIなし)ACTION_RECOGNIZE_SPEECHで音声認識を起動することができます。オプションとして

FATAL EXCEPTION: main 
                       Process: PACKAGE, PID: 25645 
                       java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference 
                        at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330) 
                        at android.widget.ListView.setAdapter(ListView.java:502) 
                        at PACKAGE.MainActivity.onResults(MainActivity.java:245) 
                        at android.speech.SpeechRecognizer$InternalListener$1.handleMessage(SpeechRecognizer.java:456) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:145) 
                        at android.app.ActivityThread.main(ActivityThread.java:6837) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:372) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 

答えて

5

ショーRecognitionListenerを実装して、public void onReadyForSpeech(Bundle params)コールバックにダイアログを表示することができます。 public void onResults(Bundle results)またはpublic void onError(int error)

+0

thaksで閉じます。私はそれを使用します。それは完全ですか?私はそれを実行するので、それはエラーメソッドを示しています。 –

+1

@MinaDaheshどのようなエラーがありますか? –

+0

マニフェストにRECORD_AUDIO権限を追加することを忘れないでください。マシュマロデバイスを使用している場合は、ユーザーから[request permission](http://developer.android.com/training/permissions/requesting.html)を送信してください。 @KhalidovOleg。 – Michiyo