В моей основной деятельности я запускаю новый Intent:RecognizerIntent.ACTION_RECOGNIZE_SPEECH заблокирован, когда кран происходит
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "What would you like to find?\n For example \"Open heart surgery\"");
startActivityForResult(intent, SPEECH_REQUEST);
Потом восстановить ключевые слова, которые были произнесенные здесь:
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == SPEECH_REQUEST && resultCode == RESULT_OK) {
List<String> results = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
String spokenText = results.get(0);
Intent intent = new Intent(ApiDemoActivity.this,SearchActivity.class);
intent.putExtra("keyword", spokenText);
startActivity(intent);
finish();
}
super.onActivityResult(requestCode, resultCode, data);
}
Теперь все это работает только хорошо, но я заметил проблему. Во время RecognizerIntent.ACTION_RECOGNIZE_SPEECH .. если я коснусь стекла Google (каким-либо образом на D-pad), это приведет к ошибке распознавания голоса. Это означает, что он отказывается обнаруживать какой-либо звук. Что может вызвать эту проблему?
Logcat Update
Я получаю две основные ошибки во время SPEECH_REQUEST, когда я нажимаю на DPad:
12-08 10:12:58.687: E/SpeechRecognizer(940): not connected to the recognition service
12-08 10:12:58.695: E/GlassRecognitionService[41e733b8](940): VoiceService disconnected.
Logcat:
12-03 09:45:06.513: E/SpeechRecognizer(847): not connected to the recognition service
12-03 09:45:06.513: I/BroadcastingVoiceInputCallback[425b67c8](847): Unregistered GlassRecognitionService
12-03 09:45:06.513: E/GlassRecognitionService[42b01bf0](847): VoiceService disconnected.
12-03 09:45:06.521: I/RecognizerController(847): stopListening
12-03 09:45:06.521: I/RecognizerController(847): detachVoiceInputCallback
12-03 09:45:06.521: I/RecognizerFactory(847): deactivate() called on no-op recognizer, nothing to do.
12-03 09:45:06.521: I/VoiceEngine[425ecfd8](847): Setting active recognizer: VoiceConfig []
12-03 09:45:06.521: I/RecognizerFactory(847): activate() called on no-op recognizer, nothing to do.
12-03 09:45:06.521: I/RecognizerController(847): cancel
12-03 09:45:06.537: D/dalvikvm(847): threadid=47: thread exiting, not yet detached (count=0)
12-03 09:45:06.545: D/native_audio_voice_microphone(847): *** Close native audio interface for GlassVoice. NativeAudioInterfaceWrapper_nativeClose() ***
12-03 09:45:06.552: I/ConcurrentAudioInterface[4256aec8](847): Closed audio interface.
затем пару секунд спустя:
12-03 09:45:16.295: V/GlassNotification(589): Received notification id: 1 packageName: com.google.glass.settings.ui
12-03 09:45:16.295: V/GlassNotification(589): skipping since notification not whitelisted
12-03 09:45:19.529: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0xd9
12-03 09:45:19.529: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x17b
12-03 09:45:19.537: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x234
12-03 09:45:19.537: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x315
12-03 09:45:19.592: D/dalvikvm(770): GC_CONCURRENT freed 386K, 8% free 5774K/6212K, paused 14ms+2ms, total 46ms
12-03 09:45:32.279: V/GlassNotification(589): Received notification id: 1 packageName: com.google.glass.settings.ui
12-03 09:45:32.279: V/GlassNotification(589): skipping since notification not whitelisted
12-03 09:45:43.490: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0xd9
12-03 09:45:43.498: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x17b
12-03 09:45:43.506: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x234
12-03 09:45:43.506: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x315
12-03 09:45:44.412: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0xd9
12-03 09:45:44.412: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x17b
12-03 09:45:44.420: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x234
12-03 09:45:44.420: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x315
12-03 09:45:45.638: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0xd9
12-03 09:45:45.638: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x17b
12-03 09:45:45.646: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x234
12-03 09:45:45.654: E/ming$MessageInputStream(770): bad domain name: possible circular name detected. Bad offset: 0x41 at 0x315
12-03 09:45:48.295: V/GlassNotification(589): Received notification id: 1 packageName: com.google.glass.settings.ui
12-03 09:45:48.295: V/GlassNotification(589): skipping since notification not whitelisted
12-03 09:45:48.342: D/dalvikvm(725): GC_EXPLICIT freed 173K, 4% free 5225K/5440K, paused 2ms+4ms, total 38ms
12-03 09:45:55.217: V/AlarmManager(506): triggered: flg=0x4 cmp=com.google.glass.logging/.WatchdogService
Update:
Я заметил, что как только я ошибка RecognizerIntent.ACTION_RECOGNIZE_SPEECH
, пару салфетки спады в ряд, наконец, будет обнаружен и я вернусь либо к новому RecognizerIntent.ACTION_RECOGNIZE_SPEECH или он просто оставляет приложение полностью. В ближайшие дни я отправлю дополнительную информацию об этом.
Он отлично работает в моем тестовом приложении. Когда я нажимаю D-pad во время действия, я просто получаю звуковой эффект DISALLOWED. Были ли какие-либо ошибки напечатаны для logcat? – Koh
@ user2954771 Я добавил logcat. – rottenoats
Очень странно. Может быть, вы должны просто переопределить событие крана через GestureDetector? –