I, essaie de travailler à travers et tester un exemple de reconnaissance vocale basée sur l'exemple VoiceRecognition.java à http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.htmlConnexion Erreur de reconnaissance vocale
mais quand cliquez sur le bouton pour créer l'activité, je reçois une boîte de dialogue qui dit Problème de connection. Mon fichier manifeste utilise l'autorisation Internet, et je comprends qu'il transmet le aux serveurs Google. Ai-je besoin de faire autre chose pour l'utiliser. Code ci-dessous
MISE À JOUR 2: Grâce à Steve, j'ai pu installer le pilote USB et déboguer l'application directement sur mon Droid. Voici la sortie LogCat de cliquer sur mon bouton micro:
03-08 18:36:45.686: INFO/ActivityManager(1017): Starting activity: Intent { act=android.speech.action.RECOGNIZE_SPEECH cmp=com.google.android.voicesearch/.IntentApiActivity (has extras) }
03-08 18:36:45.686: WARN/ActivityManager(1017): Activity is launching as a new task, so cancelling activity result.
03-08 18:36:45.787: DEBUG/NetworkLocationProvider(1017): setMinTime: 120000
03-08 18:36:45.889: INFO/ActivityManager(1017): Displayed activity com.google.android.voicesearch/.IntentApiActivity: 135 ms (total 135 ms)
03-08 18:36:45.905: DEBUG/NetworkLocationProvider(1017): onCellLocationChanged [802,0,0,4192,3]
03-08 18:36:45.951: INFO/MicrophoneInputStream(1429): Starting voice recognition with audio source VOICE_RECOGNITION
03-08 18:36:45.998: DEBUG/AudioHardwareMot(990): Codec sampling rate already 16000
03-08 18:36:46.092: INFO/RecognitionService(1429): ssfe url=http://www.google.com/m/voice-search
03-08 18:36:46.092: WARN/RecognitionService(1429): required parameter 'calling_package' is missing in IntentAPI request
03-08 18:36:46.115: DEBUG/AudioHardwareMot(990): Codec sampling rate already 16000
03-08 18:36:46.131: WARN/InputManagerService(1017): Starting input on non-focused client [email protected] (uid=10090 pid=3132)
03-08 18:36:46.131: WARN/IInputConnectionWrapper(3132): showStatusIcon on inactive InputConnection
03-08 18:36:46.248: WARN/MediaPlayer(1429): info/warning (1, 44)
03-08 18:36:46.334: DEBUG/dalvikvm(3206): GC freed 3682 objects/369416 bytes in 293ms
03-08 18:36:46.358: WARN/MediaPlayer(1429): info/warning (1, 44)
03-08 18:36:46.412: WARN/MediaPlayer(1429): info/warning (1, 44)
03-08 18:36:46.444: WARN/MediaPlayer(1429): info/warning (1, 44)
03-08 18:36:46.475: WARN/MediaPlayer(1429): info/warning (1, 44)
03-08 18:36:46.506: WARN/MediaPlayer(1429): info/warning (1, 44)
03-08 18:36:46.514: INFO/MediaPlayer(1429): Info (1,44)
03-08 18:36:46.514: INFO/MediaPlayer(1429): Info (1,44)
03-08 18:36:46.514: INFO/MediaPlayer(1429): Info (1,44)
03-08 18:36:46.514: INFO/MediaPlayer(1429): Info (1,44)
03-08 18:36:46.514: INFO/MediaPlayer(1429): Info (1,44)
03-08 18:36:46.514: INFO/MediaPlayer(1429): Info (1,44)
La ligne qui me préoccupe est la mise en garde du paramètre manquant appelant package. Ok, j'ai été capable de remplacer mon image d'émulateur par celle de HTC qui semble venir avec Google Voice Search, mais maintenant quand je cours depuis l'émulateur, je reçois un message de problème audio avec Speak Again ou Annuler les boutons. Il semble le faire revenir à la onActivityResult(), mais le resultCode est 0.
est ici la sortie LogCat:
03-07 20:21:25.396: INFO/ActivityManager(578): Starting activity: Intent { action=android.speech.action.RECOGNIZE_SPEECH comp={com.google.android.voicesearch/com.google.android.voicesearch.RecognitionActivity} (has extras) }
03-07 20:21:25.406: WARN/ActivityManager(578): Activity is launching as a new task, so cancelling activity result.
03-07 20:21:25.968: WARN/ActivityManager(578): Activity pause timeout for HistoryRecord{434f7850 {com.ikonicsoft.mileagegenie/com.ikonicsoft.mileagegenie.MileageGenie}}
03-07 20:21:26.206: WARN/AudioHardwareInterface(554): getInputBufferSize bad sampling rate: 16000
03-07 20:21:26.256: ERROR/AudioRecord(819): Recording parameters are not supported: sampleRate 16000, channelCount 1, format 1
03-07 20:21:26.696: INFO/ActivityManager(578): Displayed activity com.google.android.voicesearch/.RecognitionActivity: 1295 ms
03-07 20:21:29.890: DEBUG/dalvikvm(806): threadid=3: still suspended after undo (s=1 d=1)
03-07 20:21:29.896: INFO/dalvikvm(806): Uncaught exception thrown by finalizer (will be discarded):
03-07 20:21:29.896: INFO/dalvikvm(806): Ljava/lang/IllegalStateException;: Finalizing cursor [email protected] on ml_trackdata that has not been deactivated or closed
03-07 20:21:29.896: INFO/dalvikvm(806): at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
03-07 20:21:29.896: INFO/dalvikvm(806): at dalvik.system.NativeStart.run(Native Method)
03-07 20:21:31.468: DEBUG/dalvikvm(806): threadid=5: still suspended after undo (s=1 d=1)
03-07 20:21:32.436: WARN/IInputConnectionWrapper(806): showStatusIcon on inactive InputConnection
I, m ne sais pas encore pourquoi je, m obtenir le problème Connect sur le droïde. Je peux utiliser la recherche vocale ok. J'ai également essayé de vider le cache, et les données comme décrit dans certains messages, ne devrait pas fonctionner ??
/**
* Fire an intent to start the speech recognition activity.
*/
private void startVoiceRecognitionActivity() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
}
/**
* Handle the results from the recognition activity.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
// Fill the list view with the strings the recognizer thought it could have heard
ArrayList<String> matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
matches));
}
super.onActivityResult(requestCode, resultCode, data);
}
Je recommande de coller le journal ici, ou au moins la partie pertinente de celui-ci. Depuis votre répertoire d'outils Android, exécutez 'adb logcat'. Ne comptez pas sur les messages à l'écran, regardez les exceptions réelles lancées ou les avertissements en sortie. –
Je suis en train de tester cela sur un Motorola Droid. Je suppose que je pensais qu'il n'était pas possible de tester cela dans l'émulateur. – bugzy
Vous pouvez également recevoir des messages de débogage d'un téléphone réel. Sous menu -> paramètres -> applications -> développement, il y a une option pour le débogage USB. Activez-le et lorsque vous branchez le téléphone, LogCat (dans Eclipse) recevra vos messages d'erreur. –