我在网站上搜索并尝试了所有可能的选项,以使声音在我的iPhone应用程序中工作,该应用程序可在模拟器上运行。
具体来说,我已经尝试过这里建议的内容: Sound working in emulator, not in real iPhone
此外,我尝试在我的应用程序中运行“.wav”和“.caf”文件,并使用以下代码:
CFURLRef soundFileURLRef = NULL;
soundFileURLRef = CFBundleCopyResourceURL (CFBundleGetMainBundle (),
CFSTR ("applause"),CFSTR ("wav"),NULL );
NSLog(@"Clap Path: %s", CFURLGetString(soundFileURLRef));
AudioServicesCreateSystemSoundID (soundFileURLRef,&clappingFileID_ );
AudioServicesPlaySystemSound (clappingFileID_);
根据其他建议,我还将代码更改为以下内容:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *clapPath = [documentsDir
stringByAppendingPathComponent: @"applause.wav"];
// Put down default db if it doesn't already exist
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:clapPath]) {
NSString *defaultClapPath = [[NSBundle mainBundle]
pathForResource:@"applause" ofType:@"wav"];
if (defaultClapPath) {
[fileManager copyItemAtPath:defaultClapPath toPath:clapPath error:NULL];
}
}
// NSString *clapPath = [[NSBundle mainBundle] pathForResource:@"applause" ofType:@"caf"];
CFURLRef clapURL = (CFURLRef ) [NSURL fileURLWithPath:clapPath];
AudioServicesCreateSystemSoundID (clapURL, &clappingFileID_);
NSLog(@"calling initSounds..");
AudioServicesPlaySystemSound (clappingFileID_);
以上代码均适用于模拟器,但不适用于iphone。
还通过执行getInfo检查.wav文件属性。它说: 比特率:176 kbps 采样率:11.025 kHz 样本大小:16位 大小62 Kb
还尝试通过itunes添加它直接在应用程序上下文中运行iPhone上的.wav文件,这样可以正常工作。这表明iPhone上的编解码器存在于给定的.wav文件中并且没有损坏。
我的手机操作系统是4.1和iPhone 3GS。我编译了OS 3.2或更高版本的应用程序,直到4.2
答案 0 :(得分:1)
请确认iPhone上的声音静音开关处于关闭位置。
答案 1 :(得分:0)
请尝试以下操作:在设备上,进入设置并调高音量 - > Ringer and Alerts
然后重试您的测试。