【问题标题】:Setting values in MPNowPlayingInfoCenter has no effect在 MPNowPlayingInfoCenter 中设置值无效
【发布时间】:2014-01-10 20:17:59
【问题描述】:

我正在编写一个播放音频的应用程序,我正在尝试获取当前曲目信息以显示在锁定屏幕和控制面板上。这是我正在使用的代码:

- (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

【问题讨论】:

    标签: ios audio ios7


    【解决方案1】:

    您需要先设置背景音频

    音频会话

    // 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];
    

    【讨论】:

      猜你喜欢
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2012-04-01
      • 2016-04-06
      • 2016-04-28
      相关资源
      最近更新 更多