MPMusicPlayerController 音量衰减
Posted
技术标签:
【中文标题】MPMusicPlayerController 音量衰减【英文标题】:MPMusicPlayerController Volume Fade 【发布时间】:2012-05-12 23:23:47 【问题描述】:我有:
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
在使用该应用程序时,我需要降低音乐以发出警报,当它消失时,我想将其调高到之前的音量。这里的 musicVolume 是一个双精度数,用于存储衰减前的音量:
musicVolume = musicPlayer.volume;
if (musicPlayer.playbackState == MPMusicPlaybackStatePlaying)
[self fadeMusicOut];
这可以很好地淡出音乐。
将其淡入:
- (void) fadeMusicIn
[musicPlayer play];
musicPlayer.volume += 0.05;
if (musicPlayer.volume < musicVolume)
[self performSelector: @selector(fadeMusicIn)
withObject: nil
afterDelay: 0.1 ];
else
这可以很好地淡入音乐,但是,它总是使音量低于之前设置的音量。
如何才能恢复到原始音量? 提前致谢。
【问题讨论】:
【参考方案1】:你说的是if (musicPlayer.volume < musicVolume)
,一旦musicPlayer.volume
等于或大于musicVolume
,这基本上是停止调用performSelector: withObject: afterDelay:
方法或该if 语句中调用的任何方法。但你希望它是平等的。所以试试:
- (void) fadeMusicIn
...
if (musicPlayer.volume == musicVolume)
[self performSelector: @selector(fadeMusicIn)
withObject: nil
afterDelay: 0.1 ];
...
这样,如果musicPlayer.volume
小于或等于,if 语句就会停止,所以一旦相等,它就会停止
更新,试试 ==
【讨论】:
感谢您的回复。我确实尝试过这个,这使得差异小了一点。但是,问题仍然存在。假设您从第 0.8 卷开始。您将其淡入到 0.0 并淡入到 0.8。在这一点上,我从 musicPlayer.Volume 和 musicVolume 中得到了一个 NSLog,它们的读法相同。但是,耳机发出的实际音乐音量要小得多。以上是关于MPMusicPlayerController 音量衰减的主要内容,如果未能解决你的问题,请参考以下文章
带有 MPMusicPlayerController 的 AVAudioPlayer
在后台检测 MPMusicPlayerController 通知
iPhone - MPMusicPlayerController - 从队列中选择音频并播放
MPMusicPlayerController 可以从本地资源播放音乐吗?