我正在使用systemMusicPlayer
在应用内播放歌曲。
如果用户在“正在播放”视图上按noiseButton
,它将暂停systemMusicPlayer
歌曲音频文件10秒钟以播放noiseButton
音频文件,然后重新选择systemMusicPlayer
歌曲音频文件。
我能够暂停systemMusicPlayer
首歌曲音频文件,然后在10秒后重新选择,但是我无法让noiseButton
播放其声音10秒。
noiseButton
音频文件有效NSLog
在播放noiseButton
文件我不确定我错过了什么?
这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
musicPlayer = [MPMusicPlayerController systemMusicPlayer];
[self registerMediaPlayerNotifications];
// Construct URL to sound file
NSString *path = [NSString stringWithFormat:@"%@/background-music-aac.caf", [[NSBundle mainBundle] resourcePath]];
NSURL *soundUrl = [NSURL fileURLWithPath:path];
// Create audio player object and initialize with URL to sound
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
}
- (void)willPlayClip {
[NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector:@selector(willPlayMusicInTenSeconds:)
userInfo:nil
repeats:NO];
}
- (void)willPlayMusicInTenSeconds:(NSTimer *)timer {
NSLog(@"Get ready to Play noise sound");
[_audioPlayer play];
NSLog(@"Play noise sound");
[musicPlayer play];
NSLog(@"Start playing again");
}
noiseButton
内的代码,当它被按下时:
if ([musicPlayer playbackState] == MPMusicPlaybackStatePlaying) {
[musicPlayer pause];
NSLog(@"Paused!");
[self willPlayClip];
} else {
NSLog(@"Already paused");
}
答案 0 :(得分:1)
您设置了什么AudioSession类别?如果您不是,请参阅此文档:
如果您将会话设置为AVAudioSessionCategoryAmbient
:
声音播放非主要应用的类别 - 也就是说,您的应用可以在关闭声音的情况下成功使用。
此类别也适用于“播放”风格的应用,例如用户在播放音乐应用时播放的虚拟钢琴。使用此类别时,来自其他应用程序的音频会与您的音频混合。通过屏幕锁定和静音开关(在iPhone上称为响铃/静音开关)使您的音频静音。
如果您尚未尝试,请尝试一下。