1.初始化语音模块
if (!_voiceManager)
{
self.voiceManager = [[LJVoiceManager alloc]init];
[self.voiceManager initLJVoiceManager];
}
2. 播放
[self.voiceManager playAudio];
3. 以下是我封装的一个语音播放的类
#import "LJVoiceManager.h"
@interface LJVoiceManager ()<AVAudioPlayerDelegate>
@property (nonatomic, strong)AVAudioPlayer *avAudioPlayer;
@end
@implementation LJVoiceManager
#pragma mark -- dealloc
- (void)dealloc
{
}
#pragma mark -- 初始化
- (void)initLJVoiceManager
{
//从budle路径下读取音频文件
NSString *voicePathString = [[NSBundle mainBundle] pathForResource:@"Music" ofType:@"mp3"];
if (voicePathString.length > 0)
{
//把音频文件转换成url格式
NSURL *voiceUrl = [NSURL fileURLWithPath:voicePathString];
//初始化音频类 并且添加播放文件
self.avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:voiceUrl error:nil];
//设置代理
self.avAudioPlayer.delegate = self;
//设置初始音量大小
self.avAudioPlayer.volume = 0.3;//1:声音最大
//设置音乐播放次数 -1为一直循环
//self.avAudioPlayer.numberOfLoops = -1;
//预播放
[self.avAudioPlayer prepareToPlay];
}
}
#pragma mark -- 播放设置
//播放
- (void)playAudio
{
//如果在播放,先停止,再播放
if ([self.avAudioPlayer isPlaying])
{
[self.avAudioPlayer stop];
}
[self.avAudioPlayer play];
}
//暂停
- (void)pauseAudio
{
[self.avAudioPlayer pause];
}
//停止
- (void)stopAudio
{
self.avAudioPlayer.currentTime = 0; //当前播放时间设置为0
[self.avAudioPlayer stop];
}
#pragma mark -- AVAudioPlayerDelegate
//播放完成时调用的方法
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
CHDebugLog(@"audioPlayerDidFinishPlaying---%hhd",flag);
//如果播放完毕,则停止播放器
if (flag)
{
if ([self.avAudioPlayer isPlaying])
{
[self.avAudioPlayer stop];
}
}
}
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError * __nullable)error
{
CHDebugLog(@"audioPlayerDidFinishPlaying---%@",error);
if ([self.avAudioPlayer isPlaying])
{ //如果发生错误,也停止播放
[self.avAudioPlayer stop];
}
}
//当程序被应用外部打断之后,重新回到应用程序的时候触发。在这里当回到此应用程序的时候,继续播放音乐。
- (void)audioPlayerEndInterruption:(AVAudioPlayer *)player
{
[self.avAudioPlayer play];
}
@end