IPhone之播放系统声音

来源:互联网 发布:淘宝美国末日ps3 编辑:程序博客网 时间:2024/05/09 23:01
 IPhone可以将相关音乐,做为系统音乐播放出来。也可以直接调震。

  图片不能上传了。(可能是新浪出的问题,以后补图)

IPhone之播放系统声音

 

  首先,需要引用 AudioToolbox.framework这个包。

 

 

  然后代码如下:

#import <UIKit/UIKit.h>

#import <AudioToolbox/AudioToolbox.h>

 

 

 

@interface View22 : UIViewController <UITableViewDelegate, UITableViewDataSource>

{

 


}

 


@end

 

 

 

 

 

 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"SoundCell";

   

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

    }

 


if (indexPath.row==0) {

cell.textLabel.text=@"振动";

}

else if(indexPath.row==1)

{

cell.textLabel.text=@"系统铃声";

}

return cell;

 


}

void SystemSoundsDemoCompletionProc (

SystemSoundID  soundID,

void           *clientData)

{

AudioServicesDisposeSystemSoundID (soundID);

};

 


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


[tableView deselectRowAtIndexPath:indexPath animated:YES];


SystemSoundID soundID;


OSStatus err = kAudioServicesNoError;

if (indexPath.row == 0) {


soundID = kSystemSoundID_Vibrate;

} else {

// 查找音乐文件

NSString *cafPath =

[[NSBundle mainBundle] pathForResource:@"2" ofType:@"caf"];

NSURL *cafURL = [NSURL fileURLWithPath:cafPath];

err = AudioServicesCreateSystemSoundID((CFURLRef) cafURL, &soundID);

}

 


if (err == kAudioServicesNoError) {


err = AudioServicesAddSystemSoundCompletion

(soundID,

NULL,

NULL,

SystemSoundsDemoCompletionProc,

self

);

AudioServicesPlaySystemSound (soundID);

}

if (err != kAudioServicesNoError) {

CFErrorRef error = CFErrorCreate(NULL, kCFErrorDomainOSStatus, err, NULL);

NSString *errorDesc = (NSString*) CFErrorCopyDescription (error);

UIAlertView *cantPlayAlert =

[[UIAlertView alloc] initWithTitle:@"Cannot Play:"

  message: errorDesc

  delegate:nil

cancelButtonTitle:@"OK"

otherButtonTitles:nil];

[cantPlayAlert show];

[cantPlayAlert release];

[errorDesc release];

CFRelease (error);

}

}

 

原创粉丝点击