[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;
}
}