zoukankan      html  css  js  c++  java
  • iOS音频的后台播放 锁屏

    初始化AudioSession和基本配置

          音频播放器采用的AVPlayer ,在程序启动的时候需要配置AudioSession,AudioSession负责应用音频的设置,比如支不支持后台,打断等等,这一步很重要,比如在viewdidload里初始化AVplayer以后要调用下面的函数:

    /** 设置音频会话 */  //这种方式后台,可以连续播放非网络请求歌曲,遇到网络请求歌曲就废,需要后台申请task

    -(void)setAudioSession{

        AVAudioSession *audioSession=[AVAudioSession sharedInstance];

        [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

        [audioSession setActive:YES error:nil];

    }

    除了代码的初始化,很重要的一步是对info-plist的设置,让应用支持音频的后台播放

    库的引入包括:

    AudioToolBox.framework

    MediaPlayer.framework

    CoreMedia.framework

    AVFoundation.framework

    Remote控制

    在播放视图的ViewController里加上这两个函数:

    - (void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

    [self becomeFirstResponder];

    }

    - (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];

    [self resignFirstResponder];

    }

    当然也可以同理放到delegate.m里面的进入后台和回到前台的函数中,否则的话,上面的代码只是允许当前视图的情况下进入后台可以Remote控制

    在AppDelegate里要申请后台任务来进行处理

    - (void)applicationDidEnterBackground:(UIApplication *)application {

    [application beginReceivingRemoteControlEvents];
    }

    在添加远程控制代码:

    -(void)remoteControlReceivedWithEvent:(UIEvent *)event{

        

        //if it is a remote control event handle it correctly

        

        if (event.type == UIEventTypeRemoteControl) {

            

            if (event.subtype == UIEventSubtypeRemoteControlPlay) {

                

                [self playBarSelector:self.mPlayButton];

                

            }if (event.subtype == UIEventSubtypeRemoteControlPause) {

                

                [self playBarSelector:self.mPlayButton];

                

            } else if (event.subtype == UIEventSubtypeRemoteControlNextTrack){

                

                [self playBarSelector:self.mNextButton];

              

                [self configNowPlayingInfoCenter];

                

            }else if (event.subtype == UIEventSubtypeRemoteControlPreviousTrack){

                

                [self playBarSelector:self.mUpwardButton];

               

                

                [self configNowPlayingInfoCenter];

            }

             }

    }

    最后切换上一首和下一首要更新锁屏信息,重新调一下configNowPlayingInfoCenter方法

    - (void)configNowPlayingInfoCenter {

        

        if (NSClassFromString(@"MPNowPlayingInfoCenter")) {

            

            // 1.播放信息中心

            MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];

            

            // 2.初始化播放信息

            NSMutableDictionary *info = [NSMutableDictionary dictionary];

            // 专辑名称

            info[MPMediaItemPropertyAlbumTitle] = self.operatorObject.mExerciseText;

            // 歌手

            info[MPMediaItemPropertyArtist] = @"雅思听听小组";

            // 歌曲名称

            info[MPMediaItemPropertyTitle] = [NSString stringWithFormat:@"%@ - %@", self.operatorObject.mTextName, [self.operatorObject.mTitle substringToIndex:9]];

            // 设置图片

            info[MPMediaItemPropertyArtwork] = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"Default"]];

            // 设置持续时间(歌曲的总时间)

            info[MPMediaItemPropertyPlaybackDuration] = @(self.mAudioPlayerLong);

            // 设置当前播放进度

            info[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @(self.mPlayerCurrentTime);

            

            // 3.切换播放信息

            center.nowPlayingInfo = info;

        }

        

    }

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/Milo-CTO/p/4446919.html
Copyright © 2011-2022 走看看