iOS淡化音频应用低内存警告

时间:2012-08-06 17:35:30

标签: ios ios5 audio volume

我正在寻找一种方法,可以在杀死音频播放器之前利用didReceiveMemoryWarning淡出我应用中播放的音乐。我想淡化音乐并从内存中移除播放器而不影响系统的音量(或者至少在我完成时重置系统音量。)我只需要支持iOS 5+。

我在这里问这个问题的原因是:

  1. 我无法访问实际播放音乐的代码,它位于第三方框架中(因此我认为我唯一的解决方案是重新调整系统音量。)
  2. 到目前为止,我发现的所有解决方案都很老,很破旧,并且/或者有关于不被App商店等接受的警告等。
  3. 是否有一种可以接受的方式来淡化iPhone的音频?

2 个答案:

答案 0 :(得分:1)

如果您最终找到了至少可以访问播放器的方法,可以通过以下几种方式完成此操作。

while-loop

中运行
-(void)fadeOut
{
    while (data.volume > 0) {
        data.volume = data.volume - 0.1;
    }
    [data stop];
    data = nil;
}

或者,使用计时器:

- (void)fadeOutWithTimer
{
    if (data.volume > 0.1) {
        data.volume = data.volume - 0.1;
        [self performSelector:@selector(fadeOutWithTimer) withObject:nil afterDelay:0.05];
    } else {
        [data stop];
        data = nil;
    }
}

答案 1 :(得分:0)

在允许的API范围内,只有用户可以控制系统卷。您的应用无法对其进行调整。如您所述,在应用程序商店中不允许访问这些其他API,并且可能需要越狱设备。

您使用的是哪个第三方框架?你能检查它是否在其中使用标准音频播放器,例如AVAudioPlayer?如果是这样,您可以通过这种方式进行修改。

更新:正如Randy在下面指出的那样,你可以通过控制iPod的音量实际做到这一点:

[[MPMusicPlayerController iPodMusicPlayer] setVolume:0.05];