私のアプリでは、SpeechRecognizer を直接使用しています。Activity の SpeechRecognizer onPause を破棄し、以下のように onResume メソッドで再作成します ...
public class NoUISpeechActivity extends Activity {
protected static final String CLASS_TAG = "NoUISpeechActivity";
private SpeechRecognizer sr;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_no_uispeech);
sr = getSpeechRecognizer();
}
@Override
protected void onPause() {
Log.i(CLASS_TAG, "on pause called");
if(sr!=null){
sr.stopListening();
sr.cancel();
sr.destroy();
}
super.onPause();
}
@Override
protected void onResume() {
Log.i(CLASS_TAG, "on resume called");
sr = getSpeechRecognizer();
super.onResume();
}
....
private SpeechRecognizer getSpeechRecognizer() {
if(sr == null){
sr = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
CustomRecognizerListner listner = new CustomRecognizerListner();
listner.setOnListeningCallback(new OnListeningCallbackImp());
sr.setRecognitionListener(listner);
}
return sr;
}
}
アプリが初めて Eclipse を介してインストールされると、SpeechRecognition サービスが呼び出され、認識が適切に行われます。しかし、アプリが一時停止から戻ったときに、音声を認識しようとすると、「SpeechRecognition: 認識サービスに接続していません」というエラーが表示されます。
私は何を間違っていますか?