Detectar el modo de Silencio en iOS5?

He utilizado este método en el pasado para detectar si el interruptor de silencio está activado:

- (BOOL)silenced {
    #if TARGET_IPHONE_SIMULATOR
    //return NO in simulator. Code causes crashes for some reason.
    return NO;
    #endif

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

    if(CFStringGetLength(state) > 0)
        return NO;
    else
        return YES;
}

Esto ya no funciona en iOS5 en mi iPad o iPhone. Es este un problema conocido? No he sido capaz de encontrar todas las respuestas en el desbordamiento de pila o Apple dev foros.

Espero que te pueda ayudar…

  • Los condenados. Tengo el mismo problema. Supongo que voy a tener que hacer una condición para iOS 5.0 de usuarios… Si una actualización que viene a corregir eso. Supongo que Apple no quiere que nosotros para saber más si está activado el modo silencioso… Hacerlo, cualquier aplicación que te permite tomar fotos con el interruptor de silencio no funciona. Espero que ese no es el motivo…
  • Lo que puede que la condición de ser? Yo no soy capaz de detectar el estado del switch en iOS5. La propiedad siempre devuelve «Altavoz».
  • Revisando algunos respondToSelector para una iOS5 método para probar si el usuario utiliza iOS5 y hacer lo que sea necesario (lo siento, salir de la aplicación, buggy SO instalado)
  • ahh bueno, no es lo que yo tenía en mente 😀 Estaba esperando que había una solución podría utilizar en iOS5…
  • Extrañamente, todavía me funciona en iOS 8.2
InformationsquelleAutor CCDEV | 2011-10-17

2 Kommentare

  1. 8

    No vamos a ser capaces de detectar el interruptor de silencio del estado, ya que iOS 5…

    La respuesta de Apple es allí, en la aceptó respuesta : La detección del iPhone Timbre /Silencio /Mute) el uso de AVAudioPlayer no funciona?

    • WOW… Que mierda…! ¿De qué están pensando! El silencio interruptor de timbre se silencia todos los sonidos desde el iPhone.. Algunos usuarios no entienden esto y creo que hay algo mal con la Aplicación! La presentación de un informe de error lo antes posible!
    • de acuerdo. Y, sobre todo, el uso de las sesiones de audio no es suficiente. Imagina que tu tienes una aplicación que emite un pitido… ok, así que usted desea para vibrar en lugar de sonar. A continuación, como el audio de la sesión, no se convierte automáticamente los sonidos en vibraciones, ¿cómo se puede cambiar aquellos modo sin saber si está en modo silencioso o no. Eso suena loco !
    • por favor edita tu pregunta cuando usted tiene la Manzana de retorno ?
  2. 1

    Como se mencionó en el iOS Developer Library, la propiedad kAudioSessionProperty_AudioRoute está en desuso.
    En su lugar, Utilice el kAudioSessionProperty_AudioRoutedescription

    https://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

    Esta pregunta ha sido respondida aquí:
    La detección del iPhone Timbre /Silencio /Mute) el uso de AVAudioPlayer no funciona?

    • Hola Alon, Gracias por tu respuesta y el enlace. Todavía tengo problemas con el uso de kAudioSessionProperty_AudioRoutedescription. No tengo ninguna válido de valores de uso. Y no obtuve buenos resultados desde el siguiente al de la otra respuesta. ¿Hay alguna forma más sencilla de detectar si el silencio del timbre on/off en iOS5?
    • Como alexcurylo (en el enlace que escribí) dijo en su respuesta, por alguna razón, usted obtendrá el mismo valor para kAudioSessionProperty_AudioRoutedescription no importa si el interruptor de silencio está apagado/encendido. el problema fue reportado ya en julio – rdar://9781189
    • ahh, bien gracias… Así que no hay todavía ninguna solución válida sobre este tema? O me estoy perdiendo algo?
    • parece que, probablemente, no por ahora.
    • Que significa que cualquier aplicación o un comportamiento basado en que el interruptor no funciona para iOS 5.0. No olvide probar que en sus aplicaciones hasta una versión de iOS que corregir eso.
    • sí gracias voy. Voy a tener que publicar un UIAlertView a todos los usuarios con >= iOS5, para hacerles saber sobre el tema… Espero que se arregle pronto…
    • Definitivamente esto es es posible. ¿De qué otra manera se explica esto? cocoacontrols.com/platforms/ios/controls/vssilentswitch
    • Confirmado que funciona, sin embargo esta estática lib cuesta 20$ y ya que ustedes no tienen acceso a la fuente, no se puede saber si se utiliza la API públicas / privadas. sólo porque apple aprobado algunas aplicaciones que use no significa que no va a traer con ellos más tarde (ya sucedió con otras aplicaciones como DOSpad).
    • No sugiero en realidad el uso de la biblioteca, solo que no es de una manera. La lib parece bucle de un archivo de audio y compruebe por algunos de los resultados… en silencio interruptor de detección es, sin duda lag.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea