美文网首页
AVPlayer音乐锁屏功能

AVPlayer音乐锁屏功能

作者: 思念那年慕云 | 来源:发表于2017-03-18 23:40 被阅读203次

    [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
    iOS- 关于AVAudioSession的使用——后台播放音乐
    ios原声音频播放AVAudioSession 总结

    •AVAudioSessionCategoryAmbient
    –混音播放,例如雨声、汽车引擎等,可与其他音乐一起播放
    •AVAudioSessionCategorySoloAmbient
    –后台播放,其他音乐将被停止
    •AVAudioSessionCategoryPlayback
    –独占音乐播放
    •AVAudioSessionCategoryRecord
    –录制音频
    •AVAudioSessionCategoryPlayAndRecord
    –播放和录制音频
    •AVAudioSessionCategoryAudioProcessing
    –使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音
    

    步骤一:在AppDelegate中application:didFinishLaunchingWithOptions:方法设置

    //后台播放音频设置
         AVAudioSession *session = [AVAudioSession sharedInstance];
         [session setActive:YES error:nil];//激活音频会话。
        /*
            AVAudioSessionCategoryPlayback 或 kAudioSessionCategory_MediaPlayback
            ——用于以语音为主的应用,使用这个category的应用不会随着静音键和屏幕关闭而静音。
            如果不写这句,锁屏时,会暂停播放。
         */
         [session setCategory:AVAudioSessionCategoryPlayback error:nil];
        //注意:在这里写锁屏音乐的封面等信息也可以,不过是不是太麻烦了,所以在播放VC中设置就可以了。
    

    步骤二:在播放的界面添加锁屏信息即可

    //音乐锁屏信息展示(这里的信息应该后台返回,与URL对应。)
    - (void)setupLockScreenInfo
    {
        //歌词获取为空。
    //    AVAsset *asset = self.player.currentItem.asset;
    //    NSLog(@"lyrics===%@",asset.lyrics);
        
        // 1.获取锁屏中心
        MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];
        
        //初始化一个存放音乐信息的字典
        NSMutableDictionary *playingInfoDict = [NSMutableDictionary dictionary];
        // 2、设置歌曲名
        [playingInfoDict setObject:@"未知歌曲" forKey:MPMediaItemPropertyAlbumTitle];
        // 设置歌手名
        [playingInfoDict setObject:@"张卫健" forKey:MPMediaItemPropertyArtist];
        // 3设置封面的图片
        UIImage *image = [UIImage imageNamed:@"1.jpg"];
        if (image) {
            MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:image];
            [playingInfoDict setObject:artwork forKey:MPMediaItemPropertyArtwork];
        }
        
        // 4设置歌曲的总时长
        [playingInfoDict setObject:@"100" forKey:MPMediaItemPropertyPlaybackDuration];
        
        
        //音乐信息赋值给获取锁屏中心的nowPlayingInfo属性
        playingInfoCenter.nowPlayingInfo = playingInfoDict;
        
        // 5.开启远程交互
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    }
    
    
    //监听远程交互方法
    - (void)remoteControlReceivedWithEvent:(UIEvent *)event
    {
        
        switch (event.subtype) {
                //播放
            case UIEventSubtypeRemoteControlPlay:{
                [self.player play];
            }
                break;
                //停止
            case UIEventSubtypeRemoteControlPause:{
                [self.player pause];
            }
                break;
                //下一首
            case UIEventSubtypeRemoteControlNextTrack:
                [self clickNextSongBtn:nil];
                break;
                //上一首
            case UIEventSubtypeRemoteControlPreviousTrack:
                [self clickLastSongBtn:nil];
                break;
                
            default:
                break;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:AVPlayer音乐锁屏功能

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