Android Wear OS应用语音识别报错:未选中语音识别服务
解决Wear OS语音识别报错
E/SpeechRecognizer: no selected voice recognition service的方案 先确认设备可用的语音识别服务
先通过代码排查设备上是否存在可调用的语音识别服务,添加这段代码打印所有可用服务:PackageManager pm = getPackageManager(); List<ResolveInfo> services = pm.queryIntentServices( new Intent(RecognitionService.SERVICE_INTERFACE), 0); for (ResolveInfo info : services) { Log.d("SpeechServices", "可用服务包名: " + info.serviceInfo.packageName); }如果日志为空,说明系统未注册可用服务;如果出现
com.google.android.googlequicksearchbox这类Google相关包,说明服务存在但应用未正确绑定。强制指定Google语音识别服务
Wear OS上Google Assistant对应的语音识别服务包通常是com.google.android.googlequicksearchbox,初始化SpeechRecognizer时直接指定该服务,跳过系统默认选择逻辑:ComponentName component = new ComponentName( "com.google.android.googlequicksearchbox", "com.google.android.voicesearch.serviceapi.GoogleRecognitionService"); SpeechRecognizer recognizer = SpeechRecognizer.createSpeechRecognizer(this, component);检查Wear OS系统语音设置
Wear OS的语音设置不在应用内,需在系统设置中配置:- 手表端打开设置
- 找到语音输入或Google Assistant设置
- 确认默认语音助手设为Google Assistant,且相关权限已开启
另外,部分设备需要通过手机端Wear OS配套应用同步语音配置,建议同步后重启手表再测试。
补全权限配置
除了RECORD_AUDIO,Wear OS还需声明BIND_RECOGNITION_SERVICE权限,清单文件中添加:<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.BIND_RECOGNITION_SERVICE" />同时确保已通过代码动态申请
RECORD_AUDIO运行时权限,Wear OS权限申请流程和手机端一致。模拟器适配处理
API 30的Wear OS模拟器默认可能缺少完整的Google语音服务,建议:- 切换到带Google APIs的模拟器镜像(确保包含Google Play服务)
- 手动在模拟器中安装Google Assistant应用,重启后再测试
内容的提问来源于stack exchange,提问作者Rice
相关产品推荐
相关产品推荐

