Уровень громкости iPod влияет на уровень громкости приложения

Я пишу приложение для iPad, которое использует механизм преобразования текста в речь «Flite» для объявления определенных событий. Движок Flite использует экземпляр AVAudioPlayer для воспроизведения звука речи после его рендеринга. Ради интереса я решил добавить в свое приложение несколько простых элементов управления, чтобы позволить пользователю управлять воспроизведением iPod (следующий, предыдущий, воспроизведение / пауза и громкость - основы), пока мое приложение работает с использованием MPMusicPlayerController (конечно).

Проблема, с которой я столкнулся, заключается в том, что когда я регулирую громкость iPod с помощью MPMusicPlayerController, затрагивается весь мой звук, включая другие звуковые эффекты и звук речи. Я установил громкость для этих других аудиоплееров (экземпляры AVAudioPlayer) на 1.0 перед воспроизведением звука, но кажется, что громкость всегда ограничена любым значением, установленным для громкости проигрывателя iPod ...

Это нормально? И что я могу сделать, чтобы обойти это? Я хочу, чтобы звук моего приложения воспроизводился на полной системной громкости независимо от уровня громкости плеера iPod. (Пример: пользователь установил громкость системы на 80% от максимальной громкости устройства. Я хочу, чтобы мое приложение воспроизводило звук на уровне 100% от этих 80%, позволяя пользователю настраивать воспроизведение звука iPod на 0–100% от этих 80%. %.) Примечание. Меня не интересует "пригнуться", но я всегда устанавливаю меньшую громкость iPod, пока работает мое приложение (фоновая музыка).

У меня также есть проблема, что - иногда - когда вы впервые запускаете приложение и нажимаете кнопку воспроизведения на плеере iPod (который отправляет вызов [player play]), iPod не отвечает. Если я нажму кнопку «Домой», перейду в приложение iPod и начну воспроизведение, а затем, вернувшись в свое приложение, оно будет работать нормально. Что с этим делать?

Заранее благодарю за любую помощь!!


person Vic320    schedule 14.01.2011    source источник
comment
Привет, Вик! У вас есть решение для этого, так как я также сталкиваюсь с той же проблемой с MPMusicPlayerController и AVAudioPlayer.   -  person Ajay Sharma    schedule 19.03.2011
comment
Нет, я реализовал приглушение, но это решение не то, что я или мои пользователи ...   -  person Vic320    schedule 08.04.2011


Ответы (3)


Это может быть связано с указанной вами категорией аудиосессии. Ознакомьтесь с Руководством по программированию аудиосессии чтобы убедиться, что вы выбрали правильную категорию.

person jdmunro    schedule 22.02.2011
comment
Эта документация не помогала. Единственное, что я могу сделать, это реализовать приглушение, которое я сделал, но это не то, что я или мои пользователи хотят ... - person Vic320; 08.04.2011
comment
Какую категорию аудиосеансов вы используете? - person jdmunro; 11.04.2011
comment
Я использую категорию: kAudioSessionCategory_MediaPlayback. - person Vic320; 11.04.2011

Кнопки громкости сбоку управляют системной громкостью и, как следствие, громкостью звуков вашего приложения.

Думаю, это основной регулятор громкости.

person koregan    schedule 22.02.2011
comment
Я не пытаюсь переопределить регулятор громкости боковой кнопки. Я пытаюсь уменьшить громкость приложения iPod по сравнению с громкостью моего приложения. Однако, когда я уменьшаю громкость приложения iPod, оно также снижает громкость моего приложения. Все уровни громкости равны или ниже общей громкости, установленной с помощью кнопок. - person Vic320; 08.04.2011

вы можете установить громкость для определенных сэмплов или звуков, используя AVItem's setVolume

[набор предметовVolume]

Вы можете создать AVItem для ссылки на существующий звуковой файл в вашем приложении или на iphone. Код довольно прост и выглядит так ->

AVItem * item [[AVItem alloc] initWithPath: @ "файл"]; [item setVolume];

кстати, это не повлияет на остальную часть аудиоканала (созданную каким-то вроде объекта AVController), и громкость, которую вы установили в своем коде, не будет отображаться на вашем экране, поэтому я не уверен, можете ли вы изменить его во время выполнения .

person luca590    schedule 27.03.2011
comment
Это не работает. Даже если я установлю громкость на 100% (1.0), она все равно никогда не будет выше, чем установлено в приложении iPod. Я не понимаю, почему настройка громкости iPod должна влиять на громкость моего приложения. Конечно, я ожидаю, что громкость моего приложения не превысит общий уровень громкости. Интересно, делает ли Apple общую громкость такой же, как громкость iPod ... - person Vic320; 08.04.2011
comment
Вы используете AVAudioPlayer? - person luca590; 08.04.2011
comment
если нет, возможно, вы захотите это рассмотреть. Поскольку это тот же API, что и [setVolume], вероятно, он будет работать намного лучше - person luca590; 08.04.2011
comment
Да, весь звук, воспроизводимый моим приложением, использует AVAudio Player. Опять же, я установил громкость своего экземпляра AVAudioPlayer на 1.0 перед воспроизведением звука, но он всегда воспроизводит звук на любом уровне громкости, установленном в приложении iPod. - person Vic320; 11.04.2011
comment
хорошо, это интересно. У меня есть приложение, в котором я использую метод [setVolume: ...], и он работает для меня, но если вы все же исправите его или просто обнаружите, что это невозможно, отправьте ссылку. Извините, я не смог это исправить. - person luca590; 11.04.2011