GDK 스 니크 피크로 응용 프로그램을 작성 중이며 몰입 형 앱에서 음성 인식 기능을 사용하는 데 문제가 있습니다. 이것은 내 첫 번째 안드로이드 프로젝트입니다. SpeechRecognizer 유리 사용 권한 오류가 충분하지 않습니다.
나는이를 따라 시도 : How can I use speech recognition without the annoying dialog in android phones초기 진행 상황을 한 후, 나는 RecognitionListener 클래스는 오류 9, 불충분 한 권한을 던지고 문제를했다.
Android-15 인 GDK를 사용하고 있습니다. 여기
private GestureDetector createGestureDetector(Context context) {
GestureDetector gestureDetector = new GestureDetector(context);
//Create a base listener for generic gestures
gestureDetector.setBaseListener(new GestureDetector.BaseListener() {
@Override
public boolean onGesture(Gesture gesture) {
// Log.info(gesture.name());
if (gesture == Gesture.TAP) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);
sr.startListening(intent);
return true;
}
return false;
}
});
return gestureDetector;
}
그리고 내 리스너 클래스의 정의입니다 : 내가 탭 콜백 수신기 때
sr = SpeechRecognizer.createSpeechRecognizer(this);
sr.setRecognitionListener(new listener());
, 내가 듣기 시작 : 인식기의
초기화 내에서 onCreate() 메소드에 :
: 여기class listener implements RecognitionListener
{
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "onReadyForSpeech");
}
public void onBeginningOfSpeech()
{
Log.d(TAG, "onBeginningOfSpeech");
}
public void onRmsChanged(float rmsdB)
{
Log.d(TAG, "onRmsChanged");
}
public void onBufferReceived(byte[] buffer)
{
Log.d(TAG, "onBufferReceived");
}
public void onEndOfSpeech()
{
Log.d(TAG, "onEndofSpeech");
}
public void onError(int error)
{
Log.d(TAG, "error " + error);
// mText.setText("error " + error);
}
public void onResults(Bundle results)
{
String str = new String();
Log.d(TAG, "onResults " + results);
ArrayList<String> data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (int i = 0; i < data.size(); i++)
{
Log.d(TAG, "result " + data.get(i));
str += data.get(i);
}
// mText.setText("results: "+String.valueOf(data.size()));
}
public void onPartialResults(Bundle partialResults)
{
Log.d(TAG, "onPartialResults");
}
public void onEvent(int eventType, Bundle params)
{
Log.d(TAG, "onEvent " + eventType);
}
}
내 매니페스트 파일입니다
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.medicalglass"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="15" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.medicalglass.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>
터치 이벤트가 수신되고 즉시 듣기를 호출하면 청취자의 onError 메소드가 불완전한 권한을 나타내는 오류 코드 9와 함께 호출됩니다. 누구든지 안드로이드 음성 명령이나 유리 음성 명령에 대한 경험이 있고 이것이 왜 계속 실패 하는지를 알고 있다면 나는 매우 감사하게 여길 것입니다. 감사.
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication().getPackageName());
speechRecognizer.startListening(intent);
편집 : 매니페스트이 추가 :이 코드에
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
:이 코드를 변경하여
매니페스트 파일을 넣을 수 있습니까? – Dyna
죄송합니다, 지금 게시했습니다. 봐 주셔서 감사합니다. – samgoodness
이것이 문제가 아니지만 매니페스트의 패키지 이름이'package = "com.example.medicalglass"'이고 여기에 테스트가 있습니다 :'intent.putExtra (RecognizerIntent.EXTRA_CALLING_PACKAGE, "voice.recognition .test "); 그들은 동일하지 않아야합니까? – Dyna