Cordova媒体插件打破了iOS上的HTML5audio标签

我正在研究一个离子应用程序,现在面临一个奇怪的问题。

在视图上,我可以录制audio。 在同样的观点,我有很多的HTML5audio标签。

audio标签运作良好,直到我开始logging。 一旦startRecord执行,我不能再播放HTML5audio。 播放button不起作用。 录制的audio录制得很好,重新启动我的应用程序,我可以播放它,就像在页面上的其他audio。

Android上没有这个问题

我认为每件事情都做得很好(我已经读过,在iOS上你必须使用HTML5 APi在filesytem上创build文件,我没有成功),我在录制后发布媒体(但问题发生在stopRecord)。

有人曾经有过这个问题吗? 任何线索?

Cordova:5.1.1插件媒体:1.0.2 iOS:8.3

问候,

回来一个解决scheme。

在cordova-plugin-media / blob / master / src / ios / CDVSound.m文件中,应用以下补丁:

// get the audioSession and set the category to allow recording when device is locked or ring/silent switch engaged if ([self hasAudioSession]) { if (![self.avSession.category isEqualToString:AVAudioSessionCategoryPlayAndRecord]) { - [self.avSession setCategory:AVAudioSessionCategoryRecord error:nil]; + [self.avSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; } if (![self.avSession setActive:YES error:&error]) { 

基本上,在改变我们的AvAudioSession类别的同时,我们必须把它放在“播放和录制”类别中,不仅是“录制”,而且还添加了“与其他audio会话混合”的选项。

希望这会有所帮助;)

除了修复之外,我发现当您开始录制时,audio会自动发送到耳机而不是扬声器,从而使声音变低。 为了解决这个问题,我还添加了AVAudioSessionCategoryOptionDefaultToSpeaker掩码选项。 这将自动检测,如果你有耳机连接,如果没有,它将默认扬声器输出。 结果代码是:

 [self.avSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionMixWithOthers | AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];