2013-05-03 8 views
0

Я, похоже, не могу запустить распознаватель речи на своем телефоне. Настройки приложения и кнопка возвращают то, что нужно вернуть, но фактический распознаватель речи не возвращается в раздел «Речь о речи» и т. Д. Вот мой код, надеюсь, это легко исправить. Я запускаю Galaxy s3, который отображает erros (Trace: Can not open, нет такой директории) и ActivityManager: Warning: Activity не запущен, его текущая задача была перенесена на передний план. Может быть проблема с разрешениями. Любая помощь будет замечательной!Невозможно запустить Speechrecognizer Android

public class MainActivity extends Activity implements OnClickListener { 

ListView lv; 
private SpeechRecognizer mSpeechRecognizer; 
private Intent mSpeechRecognizerIntent; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    lv = (ListView)findViewById(R.id.lvVoiceReturn); 
    Button b= (Button)findViewById(R.id.bVoice); 
    b.setOnClickListener(this); 
    boolean available = SpeechRecognizer.isRecognitionAvailable(this); 
    Log.d("Speech", "available = " + available); 
    mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); 
    mSpeechRecognizer.setRecognitionListener(new SpeechListener()); 
    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 boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    Log.d("speech", "button active"); 
    mSpeechRecognizer.startListening(mSpeechRecognizerIntent); 


} 
private class SpeechListener implements RecognitionListener { 


    @Override 
    public void onBeginningOfSpeech() { 
     Log.d("Speech", "onBeginningOfSpeech"); 
    } 

    @Override 
    public void onBufferReceived(byte[] buffer) { 
     Log.d("Speech", "onBufferReceived"); 
    } 

    @Override 
    public void onEndOfSpeech() { 
     Log.d("Speech", "onEndOfSpeech"); 
    } 

    @Override 
    public void onError(int error) { 
     Log.d("Speech", "onError"); 
    } 

    @Override 
    public void onEvent(int eventType, Bundle params) { 
     Log.d("Speech", "onEvent"); 
    } 

    @Override 
    public void onPartialResults(Bundle partialResults) { 
     Log.d("Speech", "onPartialResults"); 
    } 

    @Override 
    public void onReadyForSpeech(Bundle params) { 
     Log.d("Speech", "onReadyForSpeech"); 
    } 


    @Override 
    public void onResults(Bundle results) { 
     Log.d("Speech", "results"); 

    } 

    @Override 
    public void onRmsChanged(float rmsdB) { 
     //Log.d("Speech", "onRmsChanged"); 
    } 

} 

}

Вот мой Manifest

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.speech.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 
+0

Какая версия ОС? ICS или JB? также опубликуйте свой манифест –

+0

Я нахожусь в JB 4.2.2 –

+0

Пользовательское разрешение было добавлено, к сожалению, до сих пор не получено никакого способа ввода голоса. Я все еще получаю эти ошибки. Я понятия не имею, что происходит сейчас. На самом деле просто нужна помощь в этом плохо. –

ответ

0

Вам необходимо следующее разрешение

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

И исправить следующую ошибку вместо

protected class mSpeechRecognizerIntent implements RecognitionListener 

должно быть

private class SpeechListener implements RecognitionListener 

и добавьте следующий код в onCreate после строки

boolean available = SpeechRecognizer.isRecognitionAvailable(); 
Log.d("Speech", "available = " + available); 
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); 
mSpeechRecognizer.setRecognitionListener(new SpeechListener()); 
Смежные вопросы