美文网首页
音乐,后台播放,锁屏播放,通知中心播放

音乐,后台播放,锁屏播放,通知中心播放

作者: 爱喝农药de清凉 | 来源:发表于2017-07-03 19:56 被阅读55次

    第一步 设置:


    屏幕快照 2017-07-03 下午7.53.13.png

    第二步:Appdelegate

    • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
      }
    • (void)applicationWillResignActive:(UIApplication *)application {
      //一般在方法:application: didFinishLaunchingWithOptions:设置
      //获取音频会话
      AVAudioSession *session = [AVAudioSession sharedInstance];
      //设置类型是播放。
      [session setCategory:AVAudioSessionCategoryPlayback error:nil];
      //激活音频会话。
      [session setActive:YES error:nil];
      }

    pragma mark - 后台显示播放信息

    • (void)setPlayingInfoTotalSeconds:(CGFloat)totalSeconds AndCurrentSecond:(CGFloat)currentSecond AndPlaybackRate:(NSObject *)playbackRate{
      // <MediaPlayer/MediaPlayer.h>
      NSIndexPath * selectedIndexPath = [self.tableViewPlain indexPathForSelectedRow];
      RSHomeMusicModel * musicModel = _dataSource[selectedIndexPath.row];
      // 1.获取锁屏中心
      MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];

      //初始化一个存放音乐信息的字典
      NSMutableDictionary *playingInfoDict = [NSMutableDictionary dictionary];
      // 2、设置歌曲名
      [playingInfoDict setObject:musicModel.musicName forKey:MPMediaItemPropertyAlbumTitle];

      // 设置歌手名
      [playingInfoDict setObject:musicModel.singerName forKey:MPMediaItemPropertyArtist];

      // 3设置封面的图片
      // UIImage *image = [self getMusicImageWithMusicId:self.currentModel];
      // if (image) {
      MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"l6_1_home_img_01"]];
      [playingInfoDict setObject:artwork forKey:MPMediaItemPropertyArtwork];

      // 4设置歌曲的总时长
      [playingInfoDict setObject:@(totalSeconds) forKey:MPMediaItemPropertyPlaybackDuration];
      // 当前播放时间
      [playingInfoDict setObject:@(currentSecond) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
      //速度
      [playingInfoDict setObject:playbackRate forKey:MPNowPlayingInfoPropertyPlaybackRate];

      //音乐信息赋值给获取锁屏中心的nowPlayingInfo属性
      playingInfoCenter.nowPlayingInfo = playingInfoDict;

      // 5.开启远程交互,只有开启这个才能进行远程操控
      [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

    }

    //监听远程交互方法

    • (void)remoteControlReceivedWithEvent:(UIEvent *)event
      {
      switch (event.subtype) {
      //播放
      case UIEventSubtypeRemoteControlPlay:{

            NSIndexPath * selectedIndexPath = [self.tableViewPlain indexPathForSelectedRow];
            RSHomeMusicModel * musicModel = _dataSource[selectedIndexPath.row];
      
            [self setPlayingInfoTotalSeconds:musicModel.totalSeconds  AndCurrentSecond:musicModel.currentSecond AndPlaybackRate:@(1)];
      
                [_audioTool jk_play];
        }
            break;
            //停止
        case UIEventSubtypeRemoteControlPause:{
        
            NSIndexPath * selectedIndexPath = [self.tableViewPlain indexPathForSelectedRow];
            RSHomeMusicModel * musicModel = _dataSource[selectedIndexPath.row];
      
            [self setPlayingInfoTotalSeconds:musicModel.totalSeconds  AndCurrentSecond:musicModel.currentSecond AndPlaybackRate:@(0)];
            NSLog(@"当前模型播放时间 : %f",musicModel.totalSeconds);
            _playButton.selected = NO;
            [_audioTool jk_pause];
            
        }
            break;
            //下一首
        case UIEventSubtypeRemoteControlNextTrack:
            [self nextButtonClick];
            
            break;
            //上一首
        case UIEventSubtypeRemoteControlPreviousTrack:
            [self previousButtonClick];
            
            break;
            
        default:
            break;
      

      }
      }

    相关文章

      网友评论

          本文标题:音乐,后台播放,锁屏播放,通知中心播放

          本文链接:https://www.haomeiwen.com/subject/eiuzcxtx.html