Распознавание речи не работает для приложения Android, использующего SpeechRecouncer в качестве службы ⇐ Android
Распознавание речи не работает для приложения Android, использующего SpeechRecouncer в качестве службы
В качестве предисловия: я совершенно новичок в Android Studio и в целом новичок в Java, но я пытаюсь создать приложение для Android, похожее на Siri, в котором я мог бы сказать фразу, и телефон автоматически подхватит фразу и вводите в приложение все, что я говорю.
Для этого я решил запустить распознавание речи в качестве фоновой службы.
Чтобы активировать услугу в MainActivity
disable.setOnClickListener(new View.OnClickListener() { @Override public void onClick (отключить просмотр) { Намерение start_action = новое намерение (MainActivity.this, BackgroundProcess.class); startService (start_action); } Код фонового процесса
пакет com.ia; импортировать статический android.app.PendingIntent.getActivity; импортировать android.app.Service; импортировать android.content.Intent; импортировать android.os.Bundle; импортировать android.os.IBinder; импортировать android.speech.RecouncerIntent; импортировать android.speech.RecognitionListener; импортировать android.speech.SpeechRecouncer; импортировать android.util.Log; импортировать android.widget.Toast; импортировать androidx.annotation.Nullable; импортировать java.util.ArrayList; импортировать java.util.List; публичный класс BackgroundProcess расширяет службу, реализует RecognitionListener { частный статический окончательный int REQUEST_CODE_SPEECH_INPUT = 1000; частный SpeechRecouncer частный int talk() { речьRecouncer = SpeechRecouncer.createSpeechRecouncer(getApplicationContext()); речьRecouncer.setRecognitionListener(это); Намерение намерение = новое намерение (RecouncerIntent.ACTION_RECOGNIZE_SPEECH); Intent.putExtra(RecouncerIntent.EXTRA_CALLING_PACKAGE, getClass() .getPackage().getName()); Intent.putExtra(RecouncerIntent.EXTRA_LANGUAGE_MODEL, RecouncerIntent.LANGUAGE_MODEL_FREE_FORM); Intent.putExtra(RecouncerIntent.EXTRA_MAX_RESULTS, 10); речьRecouncer.startListening(намерение); вернуть START_REDELIVER_INTENT; } @Override общественная недействительность onCreate() { говорить(); } @Override общественная недействительность onDestroy () { супер.onDestroy(); } @Nullable @Override public IBinder onBind (Намерение) { вернуть ноль; } @Override public void onReadyForSpeech (пакет пакетов) { } @Override общественная недействительность onBeginningOfSpeech () { } @Override public void onRmsChanged(float v) { } @Override public void onBufferReceived(byte[] байты) { } @Override общественная недействительность onEndOfSpeech () { } @Override общественная недействительность onError (int i) { } @Override public void onResults (результаты пакета) { ArrayList resultList = results.getStringArrayList(SpeechRecouncer.RESULTS_RECOGNITION); for (int i=0;i < resultList.size();i++){ Log.d("речь", "результат = " + resultList.get(i).toString()); Toast.makeText(this, "Привет", Toast.LENGTH_LONG).show(); } } @Override public void onPartialResults (Bundle Bundle) { } @Override public void onEvent(int i, Bundle Bundle) { } }
В качестве предисловия: я совершенно новичок в Android Studio и в целом новичок в Java, но я пытаюсь создать приложение для Android, похожее на Siri, в котором я мог бы сказать фразу, и телефон автоматически подхватит фразу и вводите в приложение все, что я говорю.
Для этого я решил запустить распознавание речи в качестве фоновой службы.
Чтобы активировать услугу в MainActivity
disable.setOnClickListener(new View.OnClickListener() { @Override public void onClick (отключить просмотр) { Намерение start_action = новое намерение (MainActivity.this, BackgroundProcess.class); startService (start_action); } Код фонового процесса
пакет com.ia; импортировать статический android.app.PendingIntent.getActivity; импортировать android.app.Service; импортировать android.content.Intent; импортировать android.os.Bundle; импортировать android.os.IBinder; импортировать android.speech.RecouncerIntent; импортировать android.speech.RecognitionListener; импортировать android.speech.SpeechRecouncer; импортировать android.util.Log; импортировать android.widget.Toast; импортировать androidx.annotation.Nullable; импортировать java.util.ArrayList; импортировать java.util.List; публичный класс BackgroundProcess расширяет службу, реализует RecognitionListener { частный статический окончательный int REQUEST_CODE_SPEECH_INPUT = 1000; частный SpeechRecouncer частный int talk() { речьRecouncer = SpeechRecouncer.createSpeechRecouncer(getApplicationContext()); речьRecouncer.setRecognitionListener(это); Намерение намерение = новое намерение (RecouncerIntent.ACTION_RECOGNIZE_SPEECH); Intent.putExtra(RecouncerIntent.EXTRA_CALLING_PACKAGE, getClass() .getPackage().getName()); Intent.putExtra(RecouncerIntent.EXTRA_LANGUAGE_MODEL, RecouncerIntent.LANGUAGE_MODEL_FREE_FORM); Intent.putExtra(RecouncerIntent.EXTRA_MAX_RESULTS, 10); речьRecouncer.startListening(намерение); вернуть START_REDELIVER_INTENT; } @Override общественная недействительность onCreate() { говорить(); } @Override общественная недействительность onDestroy () { супер.onDestroy(); } @Nullable @Override public IBinder onBind (Намерение) { вернуть ноль; } @Override public void onReadyForSpeech (пакет пакетов) { } @Override общественная недействительность onBeginningOfSpeech () { } @Override public void onRmsChanged(float v) { } @Override public void onBufferReceived(byte[] байты) { } @Override общественная недействительность onEndOfSpeech () { } @Override общественная недействительность onError (int i) { } @Override public void onResults (результаты пакета) { ArrayList resultList = results.getStringArrayList(SpeechRecouncer.RESULTS_RECOGNITION); for (int i=0;i < resultList.size();i++){ Log.d("речь", "результат = " + resultList.get(i).toString()); Toast.makeText(this, "Привет", Toast.LENGTH_LONG).show(); } } @Override public void onPartialResults (Bundle Bundle) { } @Override public void onEvent(int i, Bundle Bundle) { } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Разработчик Android-приложения, SpeechRecouncer onResult не может быть вызван? [закрыто]
Anonymous » » в форуме Android - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Разработчик Android-приложения, SpeechRecouncer onResult не может быть вызван? [закрыто]
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Распознавание речи Android через микрофон Bluetooth в Jetpack Compose — 2024 г.
Anonymous » » в форуме Android - 0 Ответы
- 46 Просмотры
-
Последнее сообщение Anonymous
-