簡単な質問です。
私はプログラムをバックグラウンドで再生できるように設定しましたがAVAudioPlayer
、AVPlayer
これは正常に機能しています。曲を再生したり、画面をロックしたりすると、サウンドは引き続き再生されます。
私が問題を抱えているのは[AVPlayer play]
、画面がすでにロックされているときに電話をかけることです。これにより、最終的に音楽が再生されなくなります。
簡単な質問です。
私はプログラムをバックグラウンドで再生できるように設定しましたがAVAudioPlayer
、AVPlayer
これは正常に機能しています。曲を再生したり、画面をロックしたりすると、サウンドは引き続き再生されます。
私が問題を抱えているのは[AVPlayer play]
、画面がすでにロックされているときに電話をかけることです。これにより、最終的に音楽が再生されなくなります。
コントロールイベントをリッスンするようにプレーヤーに指示する必要があります。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
次に、次のようにそれらに基づいて行動できます。
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
if (event.type == UIEventTypeRemoteControl)
{
if (event.subtype == UIEventSubtypeRemoteControlPlay)
{
[AVPlayer play];
}
else if (event.subtype == UIEventSubtypeRemoteControlPause)
{
[AVPlayer pause];
}
else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause)
{
if (!AVPlayer.playing)
{
[AVPlayer play];
} else if (AVPlayer.playing)
{
[AVPlayer pause];
}
}
else if (event.subtype == UIEventSubtypeRemoteControlNextTrack)
{
[self myNextTrackMethod];
}
else if (event.subtype == UIEventSubtypeRemoteControlPreviousTrack)
{
[self myLastTrackMethod];
}
}
}