Изменение громкости без ползунка громкости на iphone

Мне нужна ваша помощь. Как мне приступить к изменению громкости звука в моем приложении. Я не хочу использовать слайдер громкости. Вместо этого у меня есть UIImageView, который является регулятором громкости, в котором я вращаюсь по часовой стрелке, чтобы увеличить, и против часовой стрелки, чтобы уменьшить громкость звука. Вращение-это просто анимация, и я уже сделал эту часть.

Мне нужна ваша помощь и советы о том, как увеличить/уменьшить громкость. Спасибо

3 ответов


Я был бы осторожен, называя setValue на MPVolumeView так как он, вероятно, не будет делать ничего, кроме обновления внешний вид слайдера, но не фактического уровня громкости устройства. Вместо этого вам придется позвонить _commitVolumeChange, который является частным API и, вероятно, получить ваше приложение отклонено.

короткий ответ на то, как контролировать громкость: это действительно зависит от того, что вы пытаетесь контролировать громкость.

если вы хотите "контролирует каждый звук в приложение " вид управления, то вы можете использовать MPVolumeView а вы не может измените его значение программно. Затем вы сможете изменять громкость, перемещая ползунок одним касанием или используя кнопки регулировки громкости на боковой панели устройства. Лучше всего создать глобальный объект, который хранит уровень громкости, который любой из ваших объектов может прочитать перед воспроизведением звука.

если это AVAudioPlayer object, вы создадите объект и используете [theAudioPlayerObject setVolume: someFloat]; здесь someFloat - это значение между 0.0 и 1.0.

если это


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

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

[[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume];

это будет работать только после того, как вы установили свой звуковой сеанс, либо путем воспроизведения звука, либо установив его активным как таковой:

[[AVAudioSession sharedInstance] setActive:YES error:NULL];

обратите внимание, что вам понадобится MediaPlayer.рамки и AVFoundation.рамки и объем находится между 0.0 и 1.0.


Ну, возьмите минимальное вращение (R1) и максимальное вращение (R2). Тогда сделай rotation / (R2 - R1) чтобы получить % , как ползунок.

EDIT:
Чтобы зафиксировать изменение громкости, добавьте следующее:

MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame: self.view.bounds];
[systemVolumeSlider setHidden:YES];
[systemVolumeSlider setUserInteractionEnabled:NO];
[self.view addSubview:systemVolumeSlider];

(обязательно отпустите systemVolumeSlider на dealloc)

затем, когда объем изменяется, используйте setValue установить его значение. Вам также нужно будет справиться с тем, что происходит, когда ваш пользователь нажимает кнопки volume +/- на устройстве.