AMGSoundManager 1.2

AMGSoundManager 1.2

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布上次发布2016年3月

Albert Montserrat 维护。



  • Albert Montserrat

使用方法

要运行示例项目,首先从 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];

AMGAudioPlayer

在AMGSoundManager中的所有实例都是AMGAudioPlayer。您可以创建新的AMGAudioPlayer实例,以便可以通过淡入动画简单地更改音频音量。

[player setVolume:volume withFadeDuration:fadeDuration];

许可证

AMGSoundManager受MIT许可证的许可。有关更多信息,请参阅LICENSE文件。