AVPlayer音樂(lè)鎖屏功能

[iOS]iOS AudioSession詳解 Category選擇 聽(tīng)筒揚(yáng)聲器切換
iOS- 關(guān)于AVAudioSession的使用——后臺(tái)播放音樂(lè)
ios原聲音頻播放AVAudioSession 總結(jié)

?AVAudioSessionCategoryAmbient
–混音播放,例如雨聲、汽車引擎等,可與其他音樂(lè)一起播放
?AVAudioSessionCategorySoloAmbient
–后臺(tái)播放,其他音樂(lè)將被停止
?AVAudioSessionCategoryPlayback
–獨(dú)占音樂(lè)播放
?AVAudioSessionCategoryRecord
–錄制音頻
?AVAudioSessionCategoryPlayAndRecord
–播放和錄制音頻
?AVAudioSessionCategoryAudioProcessing
–使用硬件解碼器處理音頻,該音頻會(huì)話使用期間,不能播放或錄音

步驟一:在AppDelegate中application:didFinishLaunchingWithOptions:方法設(shè)置

//后臺(tái)播放音頻設(shè)置
     AVAudioSession *session = [AVAudioSession sharedInstance];
     [session setActive:YES error:nil];//激活音頻會(huì)話。
    /*
        AVAudioSessionCategoryPlayback 或 kAudioSessionCategory_MediaPlayback
        ——用于以語(yǔ)音為主的應(yīng)用,使用這個(gè)category的應(yīng)用不會(huì)隨著靜音鍵和屏幕關(guān)閉而靜音。
        如果不寫這句,鎖屏?xí)r,會(huì)暫停播放。
     */
     [session setCategory:AVAudioSessionCategoryPlayback error:nil];
    //注意:在這里寫鎖屏音樂(lè)的封面等信息也可以,不過(guò)是不是太麻煩了,所以在播放VC中設(shè)置就可以了。

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

//音樂(lè)鎖屏信息展示(這里的信息應(yīng)該后臺(tái)返回,與URL對(duì)應(yīng)。)
- (void)setupLockScreenInfo
{
    //歌詞獲取為空。
//    AVAsset *asset = self.player.currentItem.asset;
//    NSLog(@"lyrics===%@",asset.lyrics);
    
    // 1.獲取鎖屏中心
    MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];
    
    //初始化一個(gè)存放音樂(lè)信息的字典
    NSMutableDictionary *playingInfoDict = [NSMutableDictionary dictionary];
    // 2、設(shè)置歌曲名
    [playingInfoDict setObject:@"未知歌曲" forKey:MPMediaItemPropertyAlbumTitle];
    // 設(shè)置歌手名
    [playingInfoDict setObject:@"張衛(wèi)健" forKey:MPMediaItemPropertyArtist];
    // 3設(shè)置封面的圖片
    UIImage *image = [UIImage imageNamed:@"1.jpg"];
    if (image) {
        MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:image];
        [playingInfoDict setObject:artwork forKey:MPMediaItemPropertyArtwork];
    }
    
    // 4設(shè)置歌曲的總時(shí)長(zhǎng)
    [playingInfoDict setObject:@"100" forKey:MPMediaItemPropertyPlaybackDuration];
    
    
    //音樂(lè)信息賦值給獲取鎖屏中心的nowPlayingInfo屬性
    playingInfoCenter.nowPlayingInfo = playingInfoDict;
    
    // 5.開(kāi)啟遠(yuǎn)程交互
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}


//監(jiān)聽(tīng)遠(yuǎn)程交互方法
- (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;
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容