iOS:播放音乐

说明:

AudioServices适合播放短音频

AVAudioPlayer适合播放比较长的音乐

 

一、短音乐播放:

1.定义SystemSoundID成员变量,初始化SystemSoundID:

//短音乐:成员变量
@property (nonatomic, assign) SystemSoundID soundID;

/*
 短音乐:初始化SystemSoundID
 */
- (SystemSoundID)soundID{
    if(!_soundID){
        //加载音乐文件
        NSURL *url = [[NSBundle mainBundle] URLForResource:@"music.mp3" withExtension:nil];
        //初始化SystemSoundID
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &_soundID);
    }
    return _soundID;
}

2.开始播放:

/*
 短音乐:开始播放
 */
- (void)playShortSound{
    //播放音乐
    AudioServicesPlaySystemSound(self.soundID);
}

3.停止播放:

/*
 短音乐:停止播放
 */
- (void)stopShortSound{
    //停止播放
    AudioServicesDisposeSystemSoundID(self.soundID);
    self.soundID = 0;
}

二、长音乐播放:

1.定义AVAudioPlayer成员变量,初始化AVAudioPlayer:

//长音乐:播放器
@property (nonatomic, strong) AVAudioPlayer *audio;

/*
 长音乐:初始化AVAudioPlayer
 */
- (AVAudioPlayer *)audio{
    if(!_audio){
        //加载音乐文件
        NSURL *url = [[NSBundle mainBundle] URLForResource:@"music.mp3" withExtension:nil];
        //创建播放器
        _audio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        
        //获取音频会话
        AVAudioSession *session = [AVAudioSession sharedInstance];
        //设置音频会话类型
        [session setCategory:AVAudioSessionCategorySoloAmbient error:nil];
        //激活音频会话
        [session setActive:YES error:nil];
    }
    return _audio;
}

2.开始播放:

/*
 长音乐:开始播放
 */
- (void)playMusic{
    //判断是否播放中
    if([self.audio isPlaying]){
        return;
    }
    
    //缓冲
    [self.audio prepareToPlay];
    
    //开始播放
    [self.audio play];
}

3.暂停播放:

/*
 长音乐:暂停播放
 */
- (void)pauseMusic{
    //判断是否播放中
    if(![self.audio isPlaying]){
        return;
    }
    
    //暂停
    [self.audio pause];
}

4.停止播放:

/*
 长音乐:停止播放
 */
- (void)stopMusic{
    //判断是否播放中
    if(![self.audio isPlaying]){
        return;
    }
    
    //停止播放
    [self.audio stop];
}

三、允许在后台播放音乐:

1.重写AppDelegate.m的applicationDidEnterBackground方法:

/*
 系统方法:进入后台时触发
 */
- (void)applicationDidEnterBackground:(UIApplication *)application {
    //让APP在后台保持运行
    [application beginBackgroundTaskWithExpirationHandler:nil];
}

2.在Info.plist文件中增加后台音乐播放配置:

方式1:

以Source Code方式打开Info.plist文件,在dict节点中增加如下代码:

<dict>
   …
   <key>UIBackgroundModes</key>
   <array>
       <string>audio</string>
   </array>
</dict>

方式2:

以Property List方式打开Info.plist文件,在Information Property List中增加”Required background modes”,展开在Item 0的Value中输入”App plays audio or streams audio/video using AirPlay”。

3.初始化时创建音频会话,设置会话类型并激活:

        //获取音频会话
        AVAudioSession *session = [AVAudioSession sharedInstance];

        //设置音频会话类型
        [session setCategory:AVAudioSessionCategorySoloAmbient error:nil];

        //激活音频会话
        [session setActive:YES error:nil];

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值