IOS基本声音播放类


一个基本的IOS声音播放支持类,注释不多对付看吧


#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>


@interface Sound_Base : NSObject{
    
    float   volume;
    BOOL    is_turnON;
    
    AVAudioPlayer *mainMenuMusic_Player;
    
    SystemSoundID btn_soundID;
    SystemSoundID err_soundID;
    
}

@property (nonatomic)               BOOL            is_turnON;
@property (nonatomic)               float           volume;
@property (nonatomic,retain)        AVAudioPlayer   *mainMenuMusic_player;
@property (nonatomic)               SystemSoundID   btn_soundID;
@property (nonatomic)               SystemSoundID   err_soundID;



-(void)setSoundSwitch:(BOOL)sound_state;
-(void)setUIVolume:(float)f_volume;
-(void)initSound;
-(void)playSysSound:(SystemSoundID)sys_sID;
-(void)stopAllMusic;




#import "Sound_Base.h"

@implementation Sound_Base


@synthesize mainMenuMusic_player;
@synthesize volume;
@synthesize is_turnON;

@synthesize btn_soundID;
@synthesize err_soundID;




-(void)dealloc{
    
    if (self.mainMenuMusic_player.playing) {
        [self.mainMenuMusic_player stop];
    }
    [mainMenuMusic_player   release];
    
    if (btn_soundID) {
        AudioServicesDisposeSystemSoundID(btn_soundID),btn_soundID = 0;
    }
    
    if (err_soundID) {
        AudioServicesDisposeSystemSoundID(err_soundID),err_soundID = 0;
    }
    
    [super dealloc];
}




-(void)initSound{
    
    NSString *mainMenuMusic_path = [ [NSBundle mainBundle] pathForResource:@"bgm_0" ofType:@"aac"];
    
    NSURL *mainMenuMusic_url = [NSURL fileURLWithPath:mainMenuMusic_path];
    self.mainMenuMusic_player = [ [AVAudioPlayer alloc] initWithContentsOfURL:mainMenuMusic_url error:nil];
    self.mainMenuMusic_player.numberOfLoops = -1;
    [self.mainMenuMusic_player prepareToPlay];
    
    
    NSString *btnSound_path = [[NSBundle mainBundle] pathForResource:@"sys_click" ofType:@"aiff"];
    AudioServicesCreateSystemSoundID( (CFURLRef)[NSURL fileURLWithPath:btnSound_path],
                                     &btn_soundID);
    
    NSString *errSound_path = [[NSBundle mainBundle] pathForResource:@"sys_error" ofType:@"aiff"];
    AudioServicesCreateSystemSoundID( (CFURLRef)[NSURL fileURLWithPath:errSound_path],
                                     &err_soundID);
    
   
    //todo get volume  and  is silence
    
    is_turnON = YES;
    
    float f_volume = 1.0;
    
    [self setUIVolume:f_volume];
    
}




-(void)setSoundSwitch:(BOOL)sound_state{
    
    self.is_turnON = sound_state;
    
    if ( self.is_turnON ) {
        self.mainMenuMusic_player.volume = self.volume;
    } else {
        self.mainMenuMusic_player.volume = 0;
    }
}



-(void)setUIVolume:(float)f_volume{
    
    self.volume = f_volume;
    
    if ( self.is_turnON ) {
        self.mainMenuMusic_player.volume = f_volume;
    }
    else{
        self.mainMenuMusic_player.volume = 0;
    }
    
}



-(void)playSysSound:(SystemSoundID)sys_sID{
    if ( self.is_turnON ) {
        AudioServicesPlaySystemSound(sys_sID);
    }
    
}


-(void)stopAllMusic{
    [self.mainMenuMusic_player stop];
}



@end


在应用程序初始化后创建该类对象并调用其初始化函数,声音也可继续扩展添加。需要播放时调用相应的函数即可。


部分功能还没有完成,如获取配置中的音量大小,保存音量设置,声音开关等。


另外  AudioServicesPlaySystemSound(sys_sID); 来播放是声音不知道如何控制音量~~


转载请注明来自:http://blog.csdn.net/zhao_yin



猜你喜欢

转载自blog.csdn.net/zhao_yin/article/details/7233381