由于我项目里的特殊要求,项目中既有音乐播放,又有语音提示,就导致了一些莫名其妙的问题。
前提
音乐中播放音乐用的豆瓣开源的框架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文件再停止。虽然问题解决了,但却为以后打下了隐患。。。希望谁看到这个问题,有更好的解决办法能告诉我下。
网友评论