Как воспроизвести звук на уровне громкости звонка и оповещения - PullRequest
2 голосов
/ 12 сентября 2011

В моем приложении я хочу иметь будильник / уведомление об уровне громкости звонка и оповещения.

Другими словами, об уровне громкости, на котором используются телефонные звонки или будильники (Предпочтения / Звук / Звоноки оповещения).Он отличается от уровня громкости системы, который изменяется с помощью кнопок громкости.

Он также должен воспроизводиться более 30 секунд.

Я знаю, что это возможно, потому что некоторые приложения с часами могут это делать.

ОБНОВЛЕНИЕ: ОК, я нашел неидеальное решение.Если использовать AudioServicesCreateSystemSoundID и загрузить свой собственный звуковой файл (aif, wav и т. Д. Без mp3 или другого сжатого звука), чем это работает.Единственная проблема заключается в том, что он должен быть 30 секунд или меньше, но я могу разрезать его на 30 секунд и воспроизводить их по частям.

Он не работает при включенном бесшумном включении, что является проблемой для меня.

Код:

    SystemSoundID mySound;
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("mySound"), CFSTR("aif"), NULL), &mySound);
    AudioServicesPlaySystemSound(mySound);

Я подозреваю, что OpenAL должен сделать это.У кого-нибудь есть простой пример, который загружает файл aif / wav и воспроизводит его на iPhone.Я нашел несколько сложных примеров, но все, что мне нужно, это просто играть и останавливать звук (даже если он подает, это нормально).

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Я узнал это сам. Я должен использовать AudioServicesCreateSystemSoundID и загрузить свой собственный звуковой файл (aif, wav и т. Д. Без mp3 или другого сжатого аудио) Единственная проблема заключается в том, что он должен быть 30 секунд или меньше, но я могу разрезать его на 30 секунд и воспроизводить их по частям.

Не работает при тихом включении

Код:

    SystemSoundID mySound;
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("mySound"), CFSTR("aif"), NULL), &mySound);
    AudioServicesPlaySystemSound(mySound);
0 голосов
/ 12 сентября 2011

Вы должны заглянуть в класс AVAudioPlayer. Это позволит вам воспроизводить звуковые файлы любой длительности, и вы можете контролировать громкость звука для указанных файлов, которые вы хотите воспроизвести. Я не перед своим Mac, иначе я бы предоставил код. Дайте мне знать, если вам нужна дополнительная инструкция.

...