安卓屏播放语音失败,报错TextToSpeech: speak failed: not bound to TTS engine
最近碰到一个很棘手的问题,无缘无故,之前在Android9.0跑得好好的程序,升级安装系统到Android13后,就发现之前能放的语音,现在放不了了,真是头大,所以我摸索着尝试解决,且看我的解决过程。
一、事件起因
楼主准备在安卓屏上播放语音,使用的是文字转语音功能,起初是发现不播放,而且通过日志查看,初始化失败(报错:AndroidJavaException: java,lang,ClassNotFoundException: com,unity3d,player.UnityAndndroid)
jc = new AndroidJavaClass("com.unity3d.player.UnityAndAndroid");
在网上找了半天也没找到合适的方法,后来就根据日志指引,在打包的工程查看对应路径下是否有UnityAndndroid.class这个文件,发现果然没有,所以我果断丢了一个进去,再出一个apk,发现奇迹般的就可以了
二、speak failed问题
这个问题很多人都碰到过,但是并没有很全面的解决方案。我经过查找发现有以下思路可以协助解决。调用方式如下,功能是中文转语音,调用TTS底层接口实现的。
if (jc != null)
{jc.CallStatic("UnitySound", value);
}
else
{Debug.Log("SendSound jc is null!");
}
解决方法如下:
1.检查屏是否支持TTS引擎
检查TTS引擎是否安装并启用。如果不支持,需要下载一个安装apk进行
2.检查权限是否申请
找到AndroidManifest.xml文件添加权限许可
<uses-permission android:name="android.permission.INTERNET"/>
3.添加aidl请求queries节点配置
最后再出一个apk,验证后问题解决了。