当前位置: 首页 > news >正文

swift锁屏播放,音乐进度更新,专辑,歌手名显示

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

相关文章:

  • srxboys 今日说 !
  • windows 下将目录映射成盘符
  • ios自定义控件,使UIScrollView自己处理输入时键盘遮挡控件
  • 算法学习笔记——动态规划法
  • js 自定义方法 实现停留几秒 sleep
  • Global Azure SQL Server Database异地复制配置介绍
  • 练习JavaScript实现过滤特殊字符
  • jQuery Mobile_页面事件
  • struts2遍历map
  • java基础tips
  • 第一章 Java常用集合类总览
  • 判定ftp上传的脚本
  • 学习shell script中
  • 腾讯云内网DNS的配置
  • SCCM部署心得
  • 分享一款快速APP功能测试工具
  • 【剑指offer】让抽象问题具体化
  • Apache Spark Streaming 使用实例
  • C++入门教程(10):for 语句
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Iterator 和 for...of 循环
  • Puppeteer:浏览器控制器
  • React系列之 Redux 架构模式
  • 番外篇1:在Windows环境下安装JDK
  • 排序算法之--选择排序
  • 批量截取pdf文件
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何优雅地使用 Sublime Text
  • 设计模式 开闭原则
  • 什么是Javascript函数节流?
  • 树莓派 - 使用须知
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​低代码平台的核心价值与优势
  • #if和#ifdef区别
  • #Linux(Source Insight安装及工程建立)
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • .htaccess配置重写url引擎
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .Net多线程总结
  • .NET和.COM和.CN域名区别
  • @requestBody写与不写的情况
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [AAuto]给百宝箱增加娱乐功能
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BROADCASTING]tensor的扩散机制
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [codevs] 1029 遍历问题
  • [C语言]——分支和循环(4)
  • [Design Pattern] 工厂方法模式
  • [java后端研发]——文件上传与下载(2种方式)