Отменить громкость звонка в приложениях для iPhone - PullRequest
3 голосов
/ 22 июня 2009

Я создал приложение, которое воспроизводит множество звуков простым способом:

AudioServicesPlaySystemSound(someSoundID);

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

Есть ли простой способ переопределить это и фактически изменить громкость моего приложения?

Ответы [ 2 ]

4 голосов
/ 06 июля 2009

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

Вы должны импортировать инфраструктуру AVFoundation, и в объекте, который остается загруженным все время, пока ваше приложение запускается (или просматривается, или делегат приложения), вы инициализируете AVAudioPlayer, даете ему файл для воспроизведения и устанавливаете его в "prepareToPlay "это ...

Это то, что я сделал в моем главном представлении (которое используется для загрузки других представлений в качестве подпредставлений): в заголовочном файле:

#import <AVFoundation/AVFoundation.h>

@interface MainViewController : UIViewController {
    AVAudioPlayer *volumeOverridePlayer;
}

@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;

В файле реализации:

    @synthesize volumeOverridePlayer;

- (void)viewDidLoad
{
    [super viewDidLoad];

    volumeOverridePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"caf"]] error:nil];
    [volumeOverridePlayer prepareToPlay];
//...
}

Просто оставьте плеер готовым к воспроизведению вашего файла и наслаждайтесь собственным регулятором громкости без необходимости воспроизводить звуки через него! И, конечно же, не забудьте выпустить его в dealloc.

1 голос
/ 25 июня 2009

Из того, что я вижу в документации Apple, здесь есть две проблемы. 1. Приложение и громкость ОС / оборудования могут контролироваться только оборудованием / пользователем. 2. Вы играете системный звук. Я считаю, что звук системы регулируется ОС, поэтому вам не повезло, если только вы не воспроизводите реальные звуковые файлы. Если вы можете использовать звуковые файлы, посмотрите здесь .

Удачи!

...