我正在编写一个播放音频的应用,我正在尝试将当前曲目信息显示在锁定屏幕和控制面板上。这是我正在使用的代码:
- (void)setupNowPlayingInfo:(MPMediaItem*)mi
{
NSArray* keys = @[MPMediaItemPropertyAlbumTitle,
MPMediaItemPropertyAlbumTrackCount,
MPMediaItemPropertyAlbumTrackNumber,
MPMediaItemPropertyArtist,
MPMediaItemPropertyArtwork,
MPMediaItemPropertyComposer,
MPMediaItemPropertyDiscCount,
MPMediaItemPropertyDiscNumber,
MPMediaItemPropertyGenre,
MPMediaItemPropertyPersistentID,
MPMediaItemPropertyPlaybackDuration,
MPMediaItemPropertyTitle];
NSMutableDictionary* d = [NSMutableDictionary dictionary];
for (NSString* key in keys) {
if ([mi valueForProperty:key]) {
d[key] = [mi valueForProperty:key];
}
}
d[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @0.5; // TODO:
d[MPNowPlayingInfoPropertyPlaybackRate] = @1;
d[MPNowPlayingInfoPropertyPlaybackQueueIndex] = @(self.currentSongIndex);
d[MPNowPlayingInfoPropertyPlaybackQueueCount] = @(self.songs.count);
d[MPNowPlayingInfoPropertyChapterNumber] = @0;
d[MPNowPlayingInfoPropertyChapterCount] = @0;
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = d;
}
这没有效果。我在远程控制事件的文档中看到了这个有趣的界限(这对我来说也不起作用):
您的应用必须是“正在播放”应用。重申,即使您的应用是 第一个响应者,你打开了事件交付,你的应用程序 在开始播放音频之前,它不会收到遥控事件。
我的应用程序必须做什么才能成为“正在播放”的应用程序?这绝对是播放音频。
可能有必要知道我只需要在iOS 7上工作,而我正在使用The Amazing Audio Engine。
答案 0 :(得分:0)
您需要先设置背景音频
使用音频会话
// Set AVAudioSession
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
// Change the default output audio route
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];