AudioServicesPlaySystemSound не работает на устройстве iPad - PullRequest
6 голосов
/ 27 октября 2010

Я нахожусь на ранней стадии разработки своего первого приложения для iPad, и для простоты я до сих пор использую AudioServicesPlaySystemSound и связанные с ним функции для воспроизведения звуков. Мой код основан на классе SoundEffect из примера Apple Metronome.

Специфическим симптомом является то, что я могу слышать звуки в симуляторе, но не на устройстве, хотя я убедился, что я могу слышать звуки в других приложениях на устройстве. AudioServicesCreateSystemSoundID возвращает действительные идентификаторы звука, так что это не так просто, как имя звукового файла, имеющего другой регистр, то есть «sound.mp3» против «Sound.mp3».

Я понимаю, что мне может потребоваться переключиться на другую библиотеку, такую ​​как OpenAL по несвязанным причинам, но я хотел бы знать, что здесь происходит. У кого-нибудь есть предложения? Есть ли функция, которую я могу вызвать, чтобы получить значение OSStatus или что-то?

* BUMP - Я работал над другими проектами в течение последних нескольких недель, но сейчас вернусь к этому, и я очень благодарен за ответ. Спасибо.

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Я наткнулся на этот вопрос через поиск в Google.Моя проблема точно такая, как указано в заголовке этого вопроса: «AudioServicesPlaySystemSound не работает на устройстве iPad».Однако описание проблемы другое.

Проще говоря, после обновления моего iPad до iOS 4.3 перестал работать AudioServicesPlaySystemSound.

Я наконец нашел решение для своей версии проблемы,надеюсь, это поможет кому-то еще.

Перейдите в приложение «Настройки» на iPad и выберите «Общие».Нажмите Звуки.Убедитесь, что «Изменить с помощью кнопок» установлено на ВКЛ.Это решит проблему.

2 голосов
/ 27 декабря 2010

Я не думаю, что вы можете воспроизводить mp3-файл на устройстве, используя AudioServicesPlaySystemSound.Посмотрите документацию для поддерживаемых типов файлов.Я не уверен, почему они играют правильно в симуляторе, но у меня была та же проблема.Попробуйте вместо этого использовать AVAudioPlayer:

NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource: @"sound" withExtension: @"mp3"] error:&error];
if (error)  {
    NSLog(@"Error creating audio player: %@", [error userInfo]);
} else {
    [audioPlayer play];
}

[audioPlayer release];
...