AudioServicesPlaySystemSound не воспроизводит звуки - PullRequest
8 голосов
/ 27 апреля 2010

Я играю небольшой WAV-файл с помощью AudioToolBox.

AudioServicesPlaySystemSound (soundFileObject);

Но иногда он не играет.

В чем причина?

Ответы [ 6 ]

15 голосов
/ 27 апреля 2010

Если вы находитесь в симуляторе, убедитесь, что в разделе «Системные настройки» → «Звук» «Воспроизведение звуковых эффектов пользовательского интерфейса» не отключено. Если вы подключены к устройству, убедитесь, что переключатель звонка не установлен в беззвучный режим.

5 голосов
/ 15 августа 2012

Может быть, это эта проблема? AudioServicesDisposeSystemSoundID() остановит работу звука перед воспроизведением.

2 голосов
/ 30 августа 2016

Опираясь на ответ пользователя 1056521, используйте следующий код:

AudioServicesPlaySystemSoundWithCompletion(soundID, ^{
    AudioServicesDisposeSystemSoundID(soundID);
});

, где soundID - это значение SystemSoundID, полученное при вызове AudioServicesCreateSystemSoundID().

Блок завершения обеспечивает воспроизведение и завершение воспроизведения звука перед его удалением.

2 голосов
/ 13 августа 2012

Системные настройки → Звук → [x] Воспроизвести звук интерфейса пользователя - этот флажок также помог мне, он решил проблему AudioServicesPlaySystemSound (_). Но стоит отметить, что пример проекта Apple Xcode «SysSound» работал просто отлично, не устанавливая этот флажок. Я использую Xcode 4.4.1 для создания собственного приложения с нуля. Могут ли быть различия между проектами, созданными с помощью более старых и новых инструментов XCode?

0 голосов
/ 21 сентября 2018

Для тех, кто посетит этот вопрос позже,

Объем

AudioServicesPlaySystemSoundID() основан на системе Ringer в диапазоне 0.1 ~ 1.0, а не mediaVolume

Объем

AudioServicesPlayAlertSoundID() основан на системе Рингера в диапазоне приблизительно 0.3 ~ 1.0

0 голосов
/ 15 декабря 2012

На устройстве зайдите в настройки и увеличьте громкость на Звуки-> Звонок и оповещения

...