有时候在做音乐播放器的时候,会出现音乐播放器的有重音的情况,解决办法:将音乐播放器写成单例.在播放音频时做判断,如果当前音频正在播放,先将其停止,将音乐播放器置空,再播放新的音频.
PlayShare为音乐播放器的单例
PlayShare.h
#import "AudioStreamer.h"
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
@interface PlayShare : NSObject
@property(nonatomic,strong)AudioStreamer *player;//AudioStreamer为音频流
@property(nonatomic,assign)BOOL playState;//播放状态
@property(nonatomic,assign)BOOL downState;//下载状态
+(PlayShare *)playShare;
@end
PlayShare.m
#import "PlayShare.h"
<pre name="code" class="objc">#pragma mark--销毁当前的音频
- (void)destroryStreamer{
PlayShare *play = [PlayShare playShare];
if (play.player) {
[play.player stop];
play.player = nil;
}
}
#pragma 播放新的音频
-(void)loadAudioPlayback:(NSString *)path{
[self destroryStreamer];
NSURL* url = [NSURL URLWithString:path];
PlayShare *play = [PlayShare playShare];
play.player= [[AudioStreamer alloc]initWithURL:url];
play.playState = YES;
[play.player start];
}
static PlayShare *playShare = nil;@implementation PlayShare//线程保护+(PlayShare *)playShare{ static dispatch_once_t once; dispatch_once(&once, ^{ if (!playShare) { //初始化 playShare = [[PlayShare alloc] init]; playShare.playState = NO; playShare.downState = NO; } }); return playShare;}@end
在ViewController中的使用: