解決app中多語音出現的衝突問題
由於我專案裡的特殊要求,專案中既有音樂播放,又有語音提示,就導致了一些莫名其妙的問題。
前提
音樂中播放音樂用的豆瓣開源的框架DOUAudioStreamer 地址:douban/DOUAudioStreamer · GitHub 真心感謝豆瓣的這些開源專案,膜拜。
語音播報用的是訊飛語音,線上版。
問題描述
當專案中音樂和語音播報都播放了,這時候我切換到蝦米音樂點選播放音樂的時候,蝦米音樂可以播放,但奇怪的是我的app的音樂並沒有暫停,還在播放中...兩個播放器同時播放音樂了...
解決辦法
在查了一些文章和資料後知道應該是音樂設定類別的時候出問題了。
DOUAudioStreamer 設定類別的時候是這樣的,是沒有問題的
UInt32 audioCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
猜測是訊飛語音出的影響,訊飛語音是靜態庫的形式,看不到原始碼,猜測用的是AVAudioSession
不能修改原始碼 那就寫個AVAudioSession的category
重寫- (BOOL)setCategory:(NSString *)category error:(NSError **)outError;方法
強制返回NO,上面的問題解決了,音樂不會同時播放了
但是這樣播報就不會出聲了,DOUAudioStreamer播放過一次音樂以後播報就可以正常播報了,所以最終的解決辦法就是寫這個分類並且在程式剛啟動的時候播放一秒空MP3檔案再停止。雖然問題解決了,但卻為以後打下了隱患。。。希望誰看到這個問題,有更好的解決辦法能告訴我下。
相關文章
- JAR衝突問題的解決JAR
- Maven中解決依賴衝突的問題Maven
- PPT中聲音“衝突”的解決方法
- 解決ScrollView巢狀ViewPager出現的滑動衝突問題巢狀Viewpager
- git 解決版本衝突問題Git
- less中解決CSS3的calc衝突問題CSSS3
- GO 問題之多版本衝突解決Go
- HTML中兩個tabs導航衝突問題的解決方法HTML
- 如解決jquery與原生js衝突的問題jQueryJS
- Git Worktree:解決分支依賴衝突的問題Git
- 解決echsop相容jquery(transport.js的衝突)的問題jQueryJS
- Android 解決BottomSheetDialog 拖曳衝突問題Android
- Eclipse中Egit衝突解決EclipseGit
- JavaScript中解決jQuery和Prototype.js同時引入衝突問題JavaScriptjQueryJS
- 解決gerrit commit後pull發生衝突的問題MIT
- 關於 OkHttp 依賴衝突問題的解決過程HTTP
- 利用觸發器解決更新主鍵衝突的問題觸發器
- 解決Android引用多個庫的jni架構平臺支援衝突的問題Android架構
- Axure解決列表項中"觸發內部元件互動"的衝突問題元件
- 研究顯示多屏裝置解決體育賽事直播衝突問題
- Git 解決衝突Git
- git 解決衝突Git
- 徹底解決SLF4J的日誌衝突的問題
- 出現型別衝突型別
- 如何解決jQuery的美元$符號衝突問題jQuery符號
- jquery如何解決版本之間衝突的問題jQuery
- 程式衝突及其解決
- git pull 衝突解決Git
- windows解決埠衝突Windows
- IP衝突解決方案
- SVN 版本衝突解決
- hash衝突解決方法
- Git衝突解決技巧Git
- 【面試】工作中遇到的難點及解決方案——人臉解鎖相機衝突問題面試
- git pull衝突的解決方案Git
- 關於hash衝突的解決
- CentOS7安裝MySQL衝突和問題解決小結CentOSMySql
- 關於Hash 函式 雜湊索引表 解決位置衝突的問題函式索引