原文地址:IPhone之播放系统声音作者:飞舞的鸡毛

  IPhone可以将相关音乐,做为系统音乐播放出来。也可以直接调震。

4adf31eat9dbcaf3b59af&690.jpeg  

 

  首先,需要引用 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);

}

}

 

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()