2011-09-25 18 views
11

Powiel możliwe:
Detect Silent mode in iOS5?Sprawdź, czy iPad jest w trybie cichym

Użyłem poniższy kod, aby sprawdzić, czy tryb cichy jest włączony, to działa zgodnie z oczekiwaniami na iPhone, ale na iPadzie wraca głośnik niezależnie.

CFStringRef state; 
UInt32 propertySize = sizeof(CFStringRef); 
AudioSessionInitialize(NULL, NULL, NULL, NULL); 
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); 

if (CFStringGetLength(state) == 0) { 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Silent mode" 
                message:@"Please turn sound on" 
                delegate:self cancelButtonTitle:@"Ok" 
              otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

Jakieś pomysły na to, jak je zmodyfikować, aby działały uniwersalnie?

Dzięki

Dan.

Odpowiedz

0

W swoim XIB można dodać suwak, aby sprawdzić poziom głośności, więc w zasadzie można stwierdzić, czy jest cichy i znać poziom głośności. Aby uzyskać więcej informacji na temat tej klasy, kliknij link http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html, ale spróbuj najpierw:

Poniższy kod spowoduje utworzenie czegoś w rodzaju paska głośności.

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

Słyszałem, że z jakiegoś powodu Apple nie pozwala sprzedawać aplikację jeśli używasz pewnej klasy (jeden w moim przykładzie), ale nie jestem zbyt pewny o tym, chciałbym podwójnie sprawdź i upewnij się, że masz "pozwolenie" na jego użycie. Ale kod powinien zadziałać.

0

to tak odebrać odpowiedź to ładnie:

Detect Silent mode in iOS5?

i dotyczące odpowiedzi Gabe, jeśli jego odpowiedź rzeczywiście używać prywatnego API, Apple odrzuci swoją aplikację.

Powiązane problemy