2014-03-03 11 views
5

Ich erstelle eine App, in der ich erkennen möchte, dass das iPhone im Silent-Modus ist oder nicht.Wie mache ich das iPhone in den Silent-Modus ein/aus mit dem Ziel c

Ich habe bereits den unten stehenden Link

Detecting the iPhone's Ring/Silent/Mute switch using AVAudioPlayer not working?

Switching between silent mode and ring mode on an iPhone

viele Leute dachten, gegangenes sagt, dass es gegen das iPhone Politik. aber ich habe viele app gesehen, die diese Funktionalität auch

Überprüfung der unten angegebenen App-Link

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

Ich möchte schenkt auch gleiche den stillen Modus des iPhone ändern, wie die oben app tut.

Weiß jemand darüber?

+1

Haben Sie die Antwort gefunden? Ich suche auch nach demselben – rat

Antwort

0

Es gibt einen Weg, aber Ihre Anwendung wird von Apple abgelehnt werden (ich bin mir nicht sicher, kann nicht sein). Fügen Sie Ihrer Ansicht ein MPVolumeView hinzu, aber zeigen Sie es dem Benutzer nicht an (zu diesem Zweck können Sie den Rahmen entsprechend Ihrer Ansicht ändern). Sie können den Geräuschpegel von diesem Steuerelement abrufen. Hier ist der Code (iOS +7 wird getestet):


    - (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]; 
    }