Même dans l'application de caméra par défaut sur l'iPhone, monter/baisser le volume n'est pas pris en charge. Peut-être qu'ils bloquent l'entrée de ces boutons lorsque l'appareil photo est allumé. Ce qu'ils ne bloquent pas, c'est l'interrupteur silencieux. J'ai ajouté cette notification et mon rappel a été appelé, même avec l'appareil photo sur:
AudioSessionInitialize(nil, nil, nil, nil);
AudioSessionSetActive(true);
AudioSessionAddPropertyListener(
kAudioSessionProperty_AudioRouteChange,
applicationAudioRouteDidChange,
self);
Le problème que vous devez résoudre est que la méthode « applicationAudioRouteDidChange » sera également appelé si quelqu'un insère le casque. Vous pouvez vérifier cela comme dit dans le AudioSessionProgrammingGuide:
Lorsque le système invoque un rappel de changement d'itinéraire, il fournit l'information dont vous avez besoin de comprendre les mesures à prendre. Basez votre rappel sur le prototype AudioSessionPropertyListener des services de session audio , comme indiqué ici:
MyPropertyListener (void * inClientData, AudioSessionPropertyID Inid, UInt32 inDataSize, const void * InData);
Pour un événement de changement d'itinéraire, le système envoie le paramètre kAudioSessionProperty_AudioRouteChange dans le paramètre inID .
Le paramètre InData envoyé à votre rappel contient un objet CFDictionaryRef qui décrit:
Pourquoi la route a changé Qu'est-ce que l'itinéraire précédent était
Je l'ai fait et il faut l'image lorsque l'interrupteur silencieux est mmmm commuté:
void applicationAudioRouteDidChange(void *inClientData,
AudioSessionPropertyID inID,
UInt32 inDataSize, const void *inData)
{
if ([[(NSDictionary*)inData objectForKey:@"OutputDeviceDidChange_Reason"] intValue] == 5) {
[((RootViewController*)inClientData).picker takePicture];
}
// Do something like reset the system
}
Comme mentionné par Tom, la fonctionnalité que vous essayez de mettre en œuvre serait une partie d'iOS 5.
Il n'est pris en charge que si vous définissez la variable "showsCameraControl" de uiimagepickercontroller sur YES – Will