一聚教程网:一个值得你收藏的教程网站

热门教程

iOS中关于音乐锁屏控制音乐(锁屏信息设置)的实例代码

时间:2022-06-25 23:30:55 编辑:袖梨 来源:一聚教程网

 代码如下 复制代码
appDelegate里面加入如下代码获取后台播放权限
- (void)setAudioBackstagePlay{

  AVAudioSession *audioSession = [AVAudioSession sharedInstance];

  [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

  [audioSession setActive:YES error:nil];

}

//重写父类方法,接受外部事件的处理

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {

  NSLog(@"remote");

  if(receivedEvent.type == UIEventTypeRemoteControl) {

    switch(receivedEvent.subtype) {// 得到事件类型

      caseUIEventSubtypeRemoteControlTogglePlayPause:// 暂停 ios6

        [_player musicPause];// 调用你所在项目的暂停按钮的响应方法 下面的也是如此

        break;

      caseUIEventSubtypeRemoteControlPreviousTrack:// 上一首

        [self lastMusic];

        break;

      caseUIEventSubtypeRemoteControlNextTrack:// 下一首

        [self nextMusic];

        break;

      caseUIEventSubtypeRemoteControlPlay://播放

        [_player musicPlay];

        break;

      caseUIEventSubtypeRemoteControlPause:// 暂停 ios7

        [_player musicPause];

        break;

      default:

        break;

    }

  }

}

- (void)configNowPlayingCenter {

  NSLog(@"锁屏设置");

//   BASE_INFO_FUN(@"配置NowPlayingCenter");

  YBVideoListModel * list = _model.audioList[_currentIndexPath.row];

  //以下代码是加载锁屏显示网络图片以及其他设置

  [[SDWebImageManager sharedManager] downloadImageWithURL:[NSURL URLWithString:list.thumbUrl] options:SDWebImageRetryFailed progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {

    if(image == nil) {

      image = [UIImage imageNamed:@"default_music"];

    }

    NSMutableDictionary * info = [NSMutableDictionary dictionary];

    //音乐的标题

    [info setObject:list.title forKey:MPMediaItemPropertyTitle];

    //音乐的艺术家

    NSString *author= list.singer;

    [info setObject:author forKey:MPMediaItemPropertyArtist];

    //音乐的播放时间

    [info setObject:@(_player.player.currentTime.value) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];

    //音乐的播放速度

    [info setObject:@(1) forKey:MPNowPlayingInfoPropertyPlaybackRate];

    //音乐的总时间

    [info setObject:@(list.duration) forKey:MPMediaItemPropertyPlaybackDuration];

    //音乐的封面

    MPMediaItemArtwork * artwork = [[MPMediaItemArtwork alloc] initWithImage:image];

    [info setObject:artwork forKey:MPMediaItemPropertyArtwork];

    //完成设置

    [[MPNowPlayingInfoCenter defaultCenter]setNowPlayingInfo:info];

  }];

}




 

热门栏目