解決app中多語音出現的衝突問題

weixin_34208283發表於2015-12-25

由於我專案裡的特殊要求,專案中既有音樂播放,又有語音提示,就導致了一些莫名其妙的問題。

前提

  音樂中播放音樂用的豆瓣開源的框架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,上面的問題解決了,音樂不會同時播放了

1276620-598ec1d14538d0f2.png

但是這樣播報就不會出聲了,DOUAudioStreamer播放過一次音樂以後播報就可以正常播報了,所以最終的解決辦法就是寫這個分類並且在程式剛啟動的時候播放一秒空MP3檔案再停止。雖然問題解決了,但卻為以後打下了隱患。。。希望誰看到這個問題,有更好的解決辦法能告訴我下。

相關文章