SpeechRecognizer, Android 11 hedeflenirken kullanılamaz
TargetLevel'i 30'a yükselttikten sonra bir uygulamayı test ederken, SpeechRecognizer'ın artık kullanılamadığını, yani SpeechRecognizer.isRecognitionAvailable()her zaman false döndürdüğünü gördüm .
TargetLevel'i başka hiçbir şeyi değiştirmeden 29'a geri ayarlarsam, tekrar kullanılabilir. Bu gerçek bir cihazda (Pixel 3a) ve emülatörde gerçekleşir.
Bir davranış değişikliği gibi görünmüyor . Recognizer API tarafından belirtilen tek gereksinim,Manifest.permission.RECORD_AUDIO
Ayrıca logcat'te hiçbir ipucu bulamadım.
Yanıtlar
Sonunda bir çözüm buldum.
(Mevcut olmadığı iddia edilen) tanıyıcıyı gerçekten kullanmaya çalışmak, logcat'te şu mesaja yol açar:
10-13 09:19:50.273 1531 1799 I AppsFilter: interaction: PackageSetting{eb6a1b2 my.application.package/10225} -> PackageSetting{ab34503 com.google.android.googlequicksearchbox/10140} BLOCKED
10-13 09:19:50.273 1531 1799 W ActivityManager: Unable to start service Intent { act=android.speech.RecognitionService cmp=com.google.android.googlequicksearchbox/com.google.android.voicesearch.serviceapi.GoogleRecognitionService } U=0: not found
10-13 09:19:50.273 25348 25348 E SpeechRecognizer: bind to recognition service failed
Dolayısıyla sorun, bu yeni Android 11 "özelliği" ile ilgili gibi görünüyor ve çözüm, engellenen amaç için bildirime bir sorgu eklemekti:
<manifest ...>
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>