我正在使用 AVAudioPlayer 的实例来播放音频文件。该应用程序配置为在后台播放音频,并设置适当的音频会话。我也成功接收远程控制事件。
这是代码:
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()
@property (nonatomic) AVAudioPlayer *player;
@end
@implementation ViewController
@synthesize player;
- (BOOL)canBecomeFirstResponder { return YES; }
- (void)viewDidLoad
{
[super viewDidLoad];
// Turn on remote control event delivery
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
// Set ourselves as the first responder
[self becomeFirstResponder];
// Set the audio session
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
NSError *activationError = nil;
success = [audioSession setActive:YES error:&activationError];
// Play an mp3 with AVAudioPlayer
NSString *audioFileName = @"%@/Via_Aurora.mp3";
NSURL *audioURL = [NSURL fileURLWithPath:[NSString stringWithFormat:audioFileName, [[NSBundle mainBundle] resourcePath]]];
player = [[AVPlayer alloc] initWithURL:audioURL];
[player play];
}
- (void)viewWillDisappear:(BOOL)animated {
// Turn off remote control event delivery & Resign as first responder
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
// Don't forget to call super
[super viewWillDisappear:animated];
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlPreviousTrack:
NSLog(@"prev");
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"next");
break;
case UIEventSubtypeRemoteControlPlay:
[player play];
break;
case UIEventSubtypeRemoteControlPause:
[player pause];
break;
default:
break;
}
}
}
@end
当我运行应用程序时,音频会在视图加载时播放。当应用程序进入后台模式时,它会继续播放音频。我能够从控制中心成功暂停和/或播放音频(从应用程序内或锁定屏幕访问),但是,如果我访问锁定屏幕音频控件并暂停播放器,音乐将暂停,锁定屏幕控件也会暂停消失。我希望音乐暂停,但控件不会消失。
在我使用的其他音频应用程序中,您可以从锁定屏幕暂停然后播放音频。我是不是忽略了什么?这是做这样的事情的正确方法吗?
你走在正确的轨道上......
您似乎缺少设置;
MPNowPlayingInfoCenter nowPlayingInfo
没有它,您将得到描述的结果,即按下暂停后,锁屏不再显示暂停,或者确实正在播放歌曲。这是有关如何设置它的指南(我从我之前所做的工作代码中获取了此内容,但我确信您可以弄清楚是什么)。
MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc]initWithImage:albumImage];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = [NSDictionary dictionaryWithObjectsAndKeys:aSong.songTitle, MPMediaItemPropertyTitle,
aSong.artistName, MPMediaItemPropertyArtist, artwork, MPMediaItemPropertyArtwork, 1.0f, MPNowPlayingInfoPropertyPlaybackRate, nil];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)