我正在开发一个适用于iOS的应用程序,它可以在两种不同的模式下工作,其中一种模式播放iPod库中的音乐,另一种模式合成声音(例如:纯音)。
为了合成声音我使用音频单元,所以通过它的回调我可以传递所需的信号。至于声音必须以特定音量播放,我使用iPodMusicPlayer设置设备音量。
我看到的问题是,打开iPod Touch 5g后第一次运行应用程序,一旦iPodMusicPlayer用于设置设备的音量,applicationMusicPlayer将不会响应停止。
我想出了以下代码。打开后在iPod Touch 5g上运行它,触摸停止后音乐不会停止。
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
MPMusicPlayerController *mp = [MPMusicPlayerController iPodMusicPlayer];
mp.volume = 0.3;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)playAction:(id)sender {
MPMusicPlayerController *mp = [MPMusicPlayerController applicationMusicPlayer];
MPMediaQuery *query = [MPMediaQuery songsQuery];
[mp setQueueWithQuery:query];
[mp play];
}
- (IBAction)stopAction:(id)sender {
MPMusicPlayerController *mp = [MPMusicPlayerController applicationMusicPlayer];
[mp stop];
}
@end
PS:也可以通过输入音乐应用程序,退出它(双按主页按钮并退出多任务栏中的音乐)重现问题,最后运行上面的代码。
到目前为止我测试的其他设备(iPad第2代和第3代,iPod Touch 4代)中,该应用程序运行良好。
提前致谢。