ios: системный звук воспроизводится в симуляторе, но не на iphone - PullRequest
0 голосов
/ 06 августа 2011

У меня есть следующий код:

 soundFilenames = [[NSArray alloc] initWithObjects:@"Alarm Clock Bell.caf", @"Bark.caf", @"Cartoon Boing.caf", @"Chimpanzee Calls.caf", @"School Bell Ringing.caf", @"Sheep Bah.caf", @"Squeeze Toy.caf", @"Tape Rewinding.caf", nil];

...

-(void)playSound {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int index = rand() % [soundFilenames count];
    NSString* filePath = [ [self getBasePath] stringByAppendingPathComponent:     [soundFilenames objectAtIndex:index] ];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    if( [fileManager fileExistsAtPath:filePath] )
        NSLog(@"File %@ exists", [soundFilenames objectAtIndex:index]);
    else
        NSLog(@"File %@ NOT exists", [soundFilenames objectAtIndex:index]);

    CFURLRef url = CFURLCreateWithFileSystemPath ( 0, (CFStringRef) filePath, kCFURLPOSIXPathStyle, NO );
    SystemSoundID outSystemSoundID;
    AudioServicesCreateSystemSoundID( url, &outSystemSoundID );
    AudioServicesPlaySystemSound( outSystemSoundID );
    [pool drain];
}

Вывод в симуляторе и на iphone примерно такой:

2011-08-06 00:46:45.323 Alarm[199:5f03] File Cartoon Boing.caf exists

Проблема с этим кодом: когда я запускаю его в симуляторе, все работает нормально, звуки воспроизводятся, но когда я запускаю его на моем iphone, звук не воспроизводится? (Метод playound не вызывается из основного потока, поэтому выделенный пул авто-релиза)

1 Ответ

1 голос
/ 27 ноября 2011

Для воспроизведения коротких звуковых файлов на вашем устройстве, попробуйте использовать звуковые файлы формата aif или aiff (формат аудиоинтерфейса с несимметричной импульсной кодировкой (PCM)) вместо файлов формата caf (Core Audio Format).

Вы можете конвертировать caf в aiff, используя любое программное обеспечение для конвертации. Есть много доступных онлайн. Одна из таких попыток - пробная версия Bigasoft Audio Converter.

Попробовав это на вашем устройстве, сообщите мне результаты. Всего наилучшего.

...