Проблема
Я пытаюсь воспроизвести короткий (4 секунды) аудиоклип в приложении для iOS.
- На устройстве (iPhone 3G с iOS 4.2.1) Получаю тишину.Однако вибрация срабатывает по мере необходимости.
- В симуляторе звук воспроизводится, как и ожидалось.
Я работаю в экземпляре Lion VM 10.7.2 на VMWare сверхуSnow Leopard 10.6.8.
Что я пробовал
- Проверка формата - это линейный файл PCM
- Преобразованиефайл в 16-битный аудиофайл (Audacity считал, что он 32-битный)
- Удостоверился, что регистр имени файла идентичен для кода и файлов.
- Очистил цель, удалил ее с iPhone иперестроен.
код
// Usage from class
-(void)loadRunningView {
JGTimerRunningViewController *runningViewController = [[JGTimerRunningViewController alloc] initWithNibName:@"JGRunningViewController" bundle:nil];
[runningViewController loadAlertSoundWithFilename:@"DigitalAlarm1"];
}
@interface JGTimerRunningViewController : UIViewController {
IBOutlet UILabel *timeLabel;
CFURLRef soundFileURLRef;
SystemSoundID soundFileObject;
}
@implementation JGTimerRunningViewController
-(void)loadAlertSoundWithFilename:(NSString *)alertSoundFilename_ {
// Get the main bundle for the app
CFBundleRef mainBundle = CFBundleGetMainBundle ();
CFStringRef filename = (CFStringRef)alertSoundFilename_;
soundFileURLRef = CFBundleCopyResourceURL (mainBundle, filename, CFSTR ("aiff"), NULL);
// Create a system sound object representing the sound file
AudioServicesCreateSystemSoundID (soundFileURLRef, &soundFileObject);
}
..
-(IBAction)playSound:(id)sender {
AudioServicesPlaySystemSound (soundFileObject);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
-(void)showRedCard {
[[self view] setBackgroundColor:[UIColor redColor]];
[self playSound:self];
}
...
- (void)dealloc {
CFRelease(soundFileURLRef);
AudioServicesDisposeSystemSoundID(soundFileObject);
[timeLabel release];
[super dealloc];
}
@end