当 MPMusicPlayerController 在 iOS 上播放时 AVAudioPlayer 不播放声音
AVAudioPlayer doesn't play sound when MPMusicPlayerController is playing on iOS
我有一个使用 AVAudioPlayer 播放各种音乐声音的应用程序。它允许人们 select 从他们的图书馆中选择一首歌曲,并使用 MPMusicPlayerController 播放它。它曾经可以工作,他们可以用它来干扰,但现在当 MPMusicPlayerController 正在播放时,它不会使用 AVAudioPlayer 播放声音。一旦 MPMusicPlayerController 停止,它甚至不会播放声音。我已经在 13.4.1 和 13.6 上测试过了。是什么改变导致它停止工作?我该如何解决它?
它播放的声音是这样的:
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err];
[player prepareToPlay];
[player setVolume: 1.0];
[player play];
对于音乐,它使用 MPMediaPickerController 获取一个 MPMediaItemCollection,然后像这样播放:
- (void) playMusic: (MPMediaItemCollection *) collection {
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];
if (musicPlayer == nil) {
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
[musicPlayer setShuffleMode: MPMusicShuffleModeOff];
[musicPlayer setRepeatMode: MPMusicRepeatModeNone];
}
[musicPlayer setQueueWithItemCollection:collection];
[musicPlayer play];
}
感觉很蠢。电话被设置为静音模式。由于某些原因,它可以静音播放声音或音乐,但不能同时播放它们。
我有一个使用 AVAudioPlayer 播放各种音乐声音的应用程序。它允许人们 select 从他们的图书馆中选择一首歌曲,并使用 MPMusicPlayerController 播放它。它曾经可以工作,他们可以用它来干扰,但现在当 MPMusicPlayerController 正在播放时,它不会使用 AVAudioPlayer 播放声音。一旦 MPMusicPlayerController 停止,它甚至不会播放声音。我已经在 13.4.1 和 13.6 上测试过了。是什么改变导致它停止工作?我该如何解决它?
它播放的声音是这样的:
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err];
[player prepareToPlay];
[player setVolume: 1.0];
[player play];
对于音乐,它使用 MPMediaPickerController 获取一个 MPMediaItemCollection,然后像这样播放:
- (void) playMusic: (MPMediaItemCollection *) collection {
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];
if (musicPlayer == nil) {
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
[musicPlayer setShuffleMode: MPMusicShuffleModeOff];
[musicPlayer setRepeatMode: MPMusicRepeatModeNone];
}
[musicPlayer setQueueWithItemCollection:collection];
[musicPlayer play];
}
感觉很蠢。电话被设置为静音模式。由于某些原因,它可以静音播放声音或音乐,但不能同时播放它们。