¿Puede determinar el tipo específico de dispositivo conectado a la toma de auriculares de iphone / ipad / ipod?

Me he dado count de algo interesante cuando se trabaja con un iPad y su toma de auriculares.

Puedo cambiar el volumen del auricular (usando los botones de volumen del iPad) cuando conecto los auriculares con auriculares iPhone al iPad. Si desconecto los auriculares y enchufo los altavoces externos con la misma toma de auriculares, puedo ajustar el volumen de nuevo, a un nivel diferente. Si desconecto los parlantes, puedo volver a insertlos en los auriculares. El volumen cambia automáticamente al volumen que había configurado los auriculares por última vez. Si tengo un tercer dispositivo que se conecta a la toma de auriculares (en mi caso, probé con un lector de tarjetas de crédito UniMag que se conecta a la toma de auriculares), el iPad restring un tercer volumen. Parece saber qué dispositivo está conectado a la toma iPhone y configurarlo al nivel de volumen adecuado.

Esto es contrario a lo que esperaba. Esperaba que hubiera un nivel de volumen para el conector para auriculares, sin importar qué dispositivo estaba conectado a él.

Si el iPad puede determinar qué dispositivo es cuál, ¿está esto también disponible para mi aplicación nativa? ¿Puedo decir si el usuario enchufa auriculares, altavoces externos o un dispositivo de deslizar la tarjeta de crédito UniMag a la toma de auriculares usando alguna API de audio y se comportan de acuerdo con esto?

Para get una bonificación, si conoce el mecanismo técnico detrás de la capacidad de los iPads para identificar qué dispositivo es el que, sería interesante para mí también.

Estoy probando en un iPad2 con iOS5.

Puedes usar CoreAudio para este propósito. Creo que también puedes configurar notifications para cambios. Más específicamente, puedes hacer esto en iOS con sesiones de audio. Lo que buscas es un cambio de ruta. https://developer.apple.com/library/ios/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Cookbook/Cookbook.html