Как включить или выключить беззвучный режим iPhone с помощью объектива c

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

Я уже подумал по ссылке ниже

Обнаружение переключателя Ring/Silent/Mute на iPhone с помощью AVAudioPlayer не работает?

Переключение между беззвучным режимом и режимом звонка на iPhone

многие люди говорят, что это противоречит политике iPhone. но я видел много приложений, которые также предоставляют эту функциональность

проверьте ссылку на приложение ниже

https://itunes.apple.com/us/app/silentalert/id506092189?mt=8

Я также хочу изменить беззвучный режим iPhone так же, как это делает вышеуказанное приложение.

Кто-нибудь знает об этом?


person Crazy Developer    schedule 03.03.2014    source источник
comment
Вы нашли ответ? тоже ищу такой же   -  person rat    schedule 05.06.2014


Ответы (1)


Есть способ, но ваша заявка будет отклонена Apple (я не уверен, может быть и нет). Добавьте MPVolumeView в свое представление, но не показывайте его пользователю (для этого вы можете изменить рамку в соответствии с вашим представлением). Вы можете получить уровень звука от этого элемента управления. Вот код (проверено iOS +7):


    - (void)someMethod
    {
        MPVolumeView *systemVolumeSlider = [[MPVolumeView alloc] initWithFrame:  CGRectMake(-100, -100, 16, 16)];
        [systemVolumeSlider setUserInteractionEnabled:NO];
        systemVolumeSlider.showsRouteButton = NO;
        [self.view addSubview: systemVolumeSlider];
        [systemVolumeSlider sendSubviewToBack:self.view];

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

        float currentSoundLevel = [self getVolumeLevel];
        NSLog(@"volume level : %f", currentSoundLevel); // if it is 0, the phone is in silent mode

        // do your job here... 

        [[MPMusicPlayerController applicationMusicPlayer] setVolume:1.0]; // 1.0 is the max level

        // do your job here...
     }

    - (float)getVolumeLevel
    {
        MPVolumeView *slide = [MPVolumeView new];
        UISlider *volumeViewSlider;
        for (UIView *view in [slide subviews]){
            if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
                volumeViewSlider = (UISlider *) view;
        }
        return [volumeViewSlider value];
    }
person ondermerol    schedule 02.01.2015