-(IBAction)test1
{
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef =CFBundleCopyResourceURL(mainBundle,
(CFStringRef) @"Bear3", CFSTR ("wav"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef , &soundID);
AudioServicesPlaySystemSound(soundID);
AudioServicesDisposeSystemSoundID(soundID);
CFRelease(soundFileURLRef);
}
它没有播放声音文件
最佳答案
您的代码无法正常工作,因为您在处理资源之前先将其处理掉。
AudioServicesDisposeSystemSoundID(soundID);
播放声音时不应调用。您需要重新组织代码。
如果更高级别的
CF
类可以完成此工作,则还应避免使用NS
类。在这种情况下,他们可以。就是这样:代码以回应评论:
SoundExampleViewController.h:
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>
@interface SoundExampleViewController : UIViewController{
SystemSoundID bear3SoundID;
}
-(IBAction)playSoundButtonPushed:(id)sender;
@end
SoundExampleViewController.m:
#import "SoundExampleViewController.h"
@implementation SoundExampleViewController
-(IBAction)playSoundButtonPushed:(id)sender{
AudioServicesPlaySystemSound(bear3SoundID);
}
- (void)viewDidLoad{
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"Bear3" ofType:@"wav"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path],&bear3SoundID);
}
- (void)viewDidUnload{
[super viewDidUnload];
AudioServicesDisposeSystemSoundID(bear3SoundID);
}
@end
即使您坚持使用
CF
方法中的viewDidLoad
类,也应遵循此常规布局。
关于iphone - 没有声音在播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056246/