Как узнать в коде, есть ли у пользователя «Locked the Volume» в меню настроек - PullRequest
15 голосов
/ 03 августа 2011

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

Это работает нормально, но мне интересно, есть ли какой-нибудь метод для вызова или свойство для проверки, которое говорит мне об этом в коде бесплатно? Я искал в Интернете, как это сделать, но я не могу ничего найти. Заранее спасибо!

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

Теперь я полностью застрял в этом. Есть ли какие-либо частные методы или свойства, которые я могу использовать, чтобы обнаружить это?

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Есть много ответов на эту проблему, но все они, кажется, в какой-то момент не согласны с рекомендациями Apple или кураторами App Store, поскольку Apple не предоставляет официального способа сделать это.

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

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

См. здесьдля статьи, которая вдохновила меня: http://inforceapps.wordpress.com/2009/07/08/detect-mute-switch-state-on-iphone/

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

1 голос
/ 17 февраля 2012

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

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

1 голос
/ 15 ноября 2011

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

В вашей XIB вы можете добавить ползунок, чтобы проверить, какой уровень громкости у вас, так что в основном вы можете сказать, если он тихий, и узнать уровень громкости. Чтобы лучше понять этот класс, вот ссылка http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html, но попробуйте сначала:

Следующий код создаст что-то вроде панели громкости.

  - (void)viewDidLoad {
            // create a frame for MPVolumeView image
     CGRect frame = volumeViewHolder.bounds; // CGRectMake(0, 5, 180, 0);
     volumeView = [[[MPVolumeView alloc] initWithFrame:frame] autorelease];
     [volumeView sizeToFit];
     [volumeViewHolder addSubview:volumeView];

     for (UIView *view in [volumeView subviews]){
      if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
       volumeViewSlider = view;
      }
     }
     [[NSNotificationCenter defaultCenter] addObserver:self 
          selector:@selector(volumeChanged:) 
          name:@"AVSystemController_SystemVolumeDidChangeNotification" 
          object:nil];
    }
    - (void) volumeChanged:(NSNotification *)notify
    {
    [volumeViewSlider setValue:[[[notify userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue]];
    }

Я слышал, что по какой-то причине яблоко не позволяет вам продавать приложение, если вы используете определенный класс (тот, что в моем примере), но я не слишком уверен в этом, я бы перепроверил и убедился, что вам «разрешено» его использовать. Но код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...