Вопрос

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

AudioServicesPlaySystemSound(someSoundID);

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

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

Это было полезно?

Решение

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

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

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

#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.

Другие советы

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

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top