Я обыскал весь сайт и попробовал все возможные варианты, чтобы звук работал в приложении для iPhone, которое работает на симуляторе.
В частности, я попробовал то, что было предложено здесь:
Звук работает в эмуляторе, а не в реальном 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.
Также проверил свойства файла .wav, выполнив getInfo. это говорит:
Битрейт: 176 кбит / с
Частота дискретизации: 11,025 кГц
Размер выборки: 16 бит
Размер 62 Кб
Также попытался запустить файл .wav на iPhone прямо вне контекста приложения, добавив его через itunes, и это прекрасно работает. что указывает на то, что на iPhone есть кодеки для данного файла .wav и что он не поврежден.
Моя операционная система телефона 4.1 и iPhone 3GS. Я скомпилировал свое приложение для OS 3.2 или выше до 4.2