2017-04-19 遇到的一點小問題
APP的收款功能,需要語音播報收到的個別推送消息。聽說這個叫TTS(TextToSpeech)。
網(wǎng)上看了一下安卓自帶的android.speech.tts.TextToSpeech,試了試,很麻煩,會彈出選擇對話框,而且米2S試了下,返回SUCCESS,但就是沒聲音。。。

TTS選擇對話框
那就換一下專業(yè)的,看了下訊飛開放平臺。功能很豐富,有很多發(fā)音人可選擇??上щx線是收費的,只有在線是免費得,擔(dān)心有影響,算了。
正好應(yīng)用里微信的功能用得不少,就上微信開放平臺看一下。下載了測試apk竟然閃退,原來他的
libs里面armeabi-v7a文件夾里竟沒有libWXVoice.so文件。沒辦法,只能刪掉其他,只保留armeabi文件夾和里面的libWXVoice.so文件
微信TTS的libs.
看了下文檔,沒發(fā)現(xiàn)
mid-sdk-2.10.jar和mta-sdk-2.0.2.jar有啥用,就給刪掉了,沒想到一刪就報錯。真坑,文檔不寫一下。
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/tencent/stat/StatSpecifyReportedInfo;
...
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.tencent.stat.StatSpecifyReportedInfo" on path: DexPathList[[zip file "/data/app/com.wannoo.test-2/base.apk"],nativeLibraryDirectories=[/data/app/com.wannoo.test-2/lib/arm, /vendor/lib, /system/lib]]
...
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

微信TTS報錯
好吧,測試正常了,試一下效果。
和demo里的操作一樣,沒什么要特別注意的。除了使用SpeechSynthesizer.shareInstance().start(str)時,返回的int可能等于20109,這是因為微信開放平臺AppID寫錯或包名簽名不對。這個文檔沒寫,要注意。
剛關(guān)掉網(wǎng)絡(luò)試了一下,沒有網(wǎng)絡(luò)會返回-100。又去看了文檔,才發(fā)現(xiàn)這個微信也是需要網(wǎng)絡(luò)的。。。汗!換訊飛試試看