zoukankan      html  css  js  c++  java
  • 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];
  • 相关阅读:
    最简单,小白易上手 ajax请求数据库信息,echarts页面显示,无需跳转servlet
    北京市民信件大数据简单分析可视化(附加源码) 同含爬虫代码
    echart 横轴 上下分开显示
    echart 横轴倾斜
    echarts 柱状图横轴(x轴)数量太多,可以加一个滚动轴
    错误: 找不到或无法加载主类 org.apache.sqoop.Sqoop
    JAVA爬虫——爬取采集北京市政百姓信件内容——首都之窗(采用htmlunit,webmagic)附源代码、htmlUnit webmagic JAR包
    eclipse 中的DFS Location 找不到了(已解决)
    在Scala 中 val 与 var 的区别(言简意赅 小白易懂 实例代码)
    第21届国际足联世界杯观后感
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5071171.html
Copyright © 2011-2022 走看看