一個基本的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); 來播放是聲音不知道如何控制音量~~
摘自 zhao_yin的記事本