2011-09-25 11 views
11

Duplicar posibles:
Detect Silent mode in iOS5?Compruebe si el iPad está en modo silencioso

he utilizado a continuación el código para comprobar si el modo de silencio está activado, funciona como se esperaba en el iPhone, pero en el iPad, devuelve el altavoz independientemente.

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

¿Alguna idea de cómo modificarlo para que funcione universalmente?

Gracias

Dan.

Respuesta

0

En su XI ter se puede agregar un control deslizante para comprobar cuál es el nivel de volumen se encuentra en, por lo que básicamente se puede decir si está en silencio, y conocer el nivel de volumen. Para una mayor comprensión de esta clase, aquí está el enlace http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html pero intente esto primero:

El siguiente código creará algo así como una barra de volumen.

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

oí que por alguna razón Apple no permite que usted pueda vender una aplicación si se utiliza una cierta clase (el que está en mi ejemplo), pero no estoy muy seguro acerca de esto, me gustaría hacer doble verifique y asegúrese de que 'se le permita' usarlo. Pero el código debería funcionar.

0

esto para responder a las respuestas que muy bien:

Detect Silent mode in iOS5?

Y con respecto a la respuesta de Gabe, si su respuesta efectivamente utiliza una API privada, Apple va a rechazar su aplicación.

Cuestiones relacionadas