要运行示例项目,首先从 Git 仓库克隆,然后在 Example 目录中运行 pod install
。
AMGSoundManager 需要 ios 6.0 以上。
AMGSoundManager 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile
pod "AMGSoundManager"
AMGSoundManager 以单例实例形式运行,管理不同屏幕上播放的所有音频。
要创建单例,只需写下以下内容
[AMGSoundManager sharedManager]
要播放音频,AMGSoundManager 提供多种选项
-(BOOL)playAudio:(NSString *)audioPathOrData withCompletitionHandler:(void (^)(BOOL success, BOOL stopped))handler;
-(BOOL)playAudio:(NSString *)audioPathOrData withName:(NSString *)name withCompletitionHandler:(void (^)(BOOL success, BOOL stopped))handler;
-(BOOL)playAudio:(NSString *)audioPathOrData withName:(NSString *)name inLine:(NSString *)line withCompletitionHandler:(void (^)(BOOL success, BOOL stopped))handler;
-(BOOL)playAudio:(NSString *)audioPathOrData withName:(NSString *)name inLine:(NSString *)line withVolume:(float)volum andRepeatCount:(int)repeatCount fadeDuration:(CGFloat)fadeDuration withCompletitionHandler:(void (^)(BOOL success, BOOL stopped))handler;
如您所见,您只需使用音频路径或 NSData 即可播放音频。但您还可以指定名称、行、音量和重复次数。最后,如果需要,您可以指定完整处理程序或将其留空。如果指定处理程序,它将在音频结束时通知您,并说明原因(是否被停止等)。如果重复次数为 -1,音频会循环播放。
名称用于识别单个声音(或具有相同文件的多个声音的组,或您想要的其他内容),而通常使用行来识别声音类型,如 sfx、声音、背景音乐等。但名称和行是什么由您决定。
如果您在所有方法中将 fadeDuration 设置为 0.0,则将简单地忽略渐变。
然后,您可以使用以下方法停止音频
-(void)stopAllAudiosWithFadeDuration:(CGFloat)fadeDuration;
-(void)stopAllAudiosForLine:(NSString *)line withFadeDuration:(CGFloat)fadeDuration;
-(void)stopAllAudiosWithoutLineWithFadeDuration:(CGFloat)fadeDuration;
-(void)stopAudioWithName:(NSString *)name withFadeDuration:(CGFloat)fadeDuration;
-(void)stopAudioWithPath:(NSString *)path withFadeDuration:(CGFloat)fadeDuration;
此外,如果您想检查是否正在播放音频,您可以写入以下内容
-(BOOL)isAudioPlayingInLine:(NSString *)line;
-(BOOL)isAudioPlayingInLine:(NSString *)line withName:(NSString *)name;
您还可以暂停和恢复音频
-(void)pauseAudiosInLine:(NSString *)line;
-(void)resumeAudiosInLine:(NSString *)line;
最酷的功能:您可以更改任何正在播放的音频的音量!
-(void)setVolume:(float)volum forLine:(NSString*)line withFadeDuration:(CGFloat)fadeDuration;
AMGSoundManager 还实现了代理,以便在音频完成或出现某些类型的错误时通知。通过这种方式,您可以创建音频序列。
-(void)audioDidFinish:(NSString *)name inLine:(NSString *)line;
-(void)audioErrorOcurred:(NSString *)name inLine:(NSString *)line;
还有另一种方法可以通过通知来确定音频何时结束
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(soundEndedNotification:) name:kSoundManagerAudioEnded object:nil];
然后
-(void)soundEndedNotification:(NSNotification *)notification{
NSDictionary *info = notification.userInfo;
NSString *line = [info objectForKey:@"line"];
NSDictionary *audio = [info objectForKey:@"info"];
NSString *name = [audio objectForKey:@"name"];
if([name isEqualToString:@"my_audio_name"]){
//Do whatever
}
}
运行背景音乐
if(![[AMGSoundManager sharedManager] isAudioPlayingInLine:@"background"]){
[[AMGSoundManager sharedManager] playAudio:[[NSBundle mainBundle] pathForResource:@"background_music" ofType:@"mp3"]
withName:@"ambient"
inLine:@"background"
withVolume:volume_slider.value
andRepeatCount:-1
fadeDuration:1.0
withCompletitionHandler:^(BOOL success, BOOL stopped) {
NSLog(@"Audio has ended!");
}];
}
停止一行中的所有音频
[[AMGSoundManager sharedManager] stopAllAudiosForLine:@"background" withFadeDuration:1.0];
在实时中更改音频的音量
[[AMGSoundManager sharedManager] setVolume:1.0 forLine:@"background" withFadeDuration:1.0];
在AMGSoundManager中的所有实例都是AMGAudioPlayer。您可以创建新的AMGAudioPlayer实例,以便可以通过淡入动画简单地更改音频音量。
[player setVolume:volume withFadeDuration:fadeDuration];
AMGSoundManager受MIT许可证的许可。有关更多信息,请参阅LICENSE文件。