码迷,mamicode.com
首页 > 移动开发 > 详细

音乐类型APP:如何添加正播放的音乐进度,歌手名,图片等信息显示 到锁屏和控制中心

时间:2015-05-27 19:04:09      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

  1. 使用的是豆瓣的音频播放类
  2. 导入头文件#import <MediaPlayer/MediaPlayer.h>
  3. #import <MediaPlayer/MPNowPlayingInfoCenter.h>
  4. #import <MediaPlayer/MPMediaItem.h>
  5. 远程控制事件接收与处理
    - (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;
            }
        }
    }
    1. 传递信息到锁屏状态下- (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];
             }
      }
      }
    2. 有几个注意点是,每次你暂停时需要保存当前的音乐播放进度和锁屏下进度光标的速度设置为接近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];
    3. 此上面的mSlider是个UISlider控制播放进度的。

音乐类型APP:如何添加正播放的音乐进度,歌手名,图片等信息显示 到锁屏和控制中心

标签:

原文地址:http://www.cnblogs.com/moyazi/p/4534011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!