博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift锁屏播放,音乐进度更新,专辑,歌手名显示
阅读量:6186 次
发布时间:2019-06-21

本文共 2392 字,大约阅读时间需要 7 分钟。

    1. 我自己用的音乐播放器是自带的AVPlayer
    2. 导入头文件#import <MediaPlayer/MediaPlayer.h>
    3. 远程控制事件接收与处理
      - (void)viewWillAppear:(BOOL)animated
      {
      [super viewWillAppear:animated];
      [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
      [self becomeFirstResponder];
      }
      -(void)viewDidDisappear:(BOOL)animated{
          [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
      [self resignFirstResponder];
      }

      - (void)remoteControlReceivedWithEvent:(UIEvent *)event
      {
      if (event.type == UIEventTypeRemoteControl) {
              switch (event.subtype) {
      case UIEventSubtypeRemoteControlPlay:
                      [self play]; // 播放
                      break;
      case UIEventSubtypeRemoteControlPause:
                      [self pause];//暂停  
                      break;
      case UIEventSubtypeRemoteControlPreviousTrack:
                      [self forwardItem]; // 播放上一曲按钮
                      break;
      case UIEventSubtypeRemoteControlNextTrack:
                      [self nextItem]; // 播放下一曲按钮
                      break;
                  default:
                      break;
              }
          }
      }
    4. 传递信息到锁屏状态下- (void)configPlayingInfo 此方法在播放歌曲与切换歌曲时调用即可
      {
      if (NSClassFromString(@"MPNowPlayingInfoCenter")) {
              if ((lastPlayItem != self.player.currentItem) && !isRepeat) {
                  lastPlayItem = self.player.currentItem;
      NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
                  [dict setObject:self.titleLabel.text forKey:MPMediaItemPropertyTitle];//歌曲名设置
                  [dict setObject:self.artistLabel.text forKey:MPMediaItemPropertyArtist];//歌手名设置
                  [dict setObject:[[MPMediaItemArtwork alloc] initWithImage:self.artwork.image]  forKey:MPMediaItemPropertyArtwork];//专辑图片设置
                  [dict setObject:[NSNumber numberWithDouble:CMTimeGetSeconds(self.player.currentItem.currentTime)] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime]; //音乐当前已经播放时间
                  [dict setObject:[NSNumber numberWithFloat:1.0] forKey:MPNowPlayingInfoPropertyPlaybackRate];//进度光标的速度 (这个随 自己的播放速率调整,我默认是原速播放)
                  [dict setObject:[NSNumber numberWithDouble:CMTimeGetSeconds(self.player.currentItem.duration)] forKey:MPMediaItemPropertyPlaybackDuration];//歌曲总时间设置
                  [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];
              }
      }
      }
    5. 有几个注意点是,每次你暂停时需要保存当前的音乐播放进度和锁屏下进度光标的速度设置为接近0的数(0.00001),以便下次恢复播放时锁屏下进度光标位置能正常。如下代码:NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:[[MPNowPlayingInfoCenter defaultCenter] nowPlayingInfo]];
              [dict setObject:[NSNumber numberWithDouble:CMTimeGetSeconds(CMTimeMakeWithSeconds((mSlider.value/timess)*timess, self.player.currentItem.currentTime.timescale))] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
              [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];

转载地址:http://qgada.baihongyu.com/

你可能感兴趣的文章
struts2的工作机制
查看>>
hash算法原理详解
查看>>
20180918 博客作业
查看>>
C++: std::string 与 Unicode 如何结合?
查看>>
dbUtils 工具类介绍
查看>>
python创建TCP代理
查看>>
斯坦福机器学习课程笔记(第五讲)
查看>>
spark性能测试理论-Benchmark(转)
查看>>
ukulele弹奏模拟器v1.0(待完善)
查看>>
字符串
查看>>
OpenStack的基本概念与架构图
查看>>
[NOI2016]优秀的拆分&&BZOJ2119股市的预测
查看>>
HDU 4452 Running Rabbits 模拟
查看>>
UVA 10089 Repackaging 数学问题
查看>>
Grunt的配置和使用
查看>>
日常语录
查看>>
Maven学习总结(14)——Maven 多模块项目如何分工?
查看>>
c# indexof 用法
查看>>
The user specified as a definer ('root'@'%') does not exist解决
查看>>
window10下用ZIP压缩包安装 mysql 8.0.11
查看>>