Certaines applications iPhone, telles que Pandora, semblent manipuler directement le volume matériel et répondre au bouton de volume physique. Comment cela est-il fait? AudioSessionServices vous permet d'obtenir le volume de sortie matériel actuel avec la propriété kAudioSessionProperty_CurrentHardwareOutputVolume
, mais il est (prétendument) en lecture seule.Comment définir le volume du matériel dans une application iPhone?
6
A
Répondre
7
Ils utilisent le MPVolumeView, simple l'ajouter et c'est le reste quand l'utilisateur le touche. Remarque: Ne fonctionne pas dans iPhone Simulator. Je pense que la note de publication mentionnée ne l'utilise pas directement dans Interface Builder.
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(25, 378, 270, 30)];
[self.view addSubview:volumeView];
[volumeView release];
6
Voici un autre (complet) exemple de réglage du volume du matériel et récupérer le volume après avoir appuyé sur les touches matérielles:
// AVAudiosession Delegate Method
- (void)endInterruptionWithFlags:(NSUInteger)flags
{
// When interruption ends - set the apps audio session active again
[[AVAudioSession sharedInstance] setActive:YES error:nil];
if(flags == AVAudioSessionInterruptionFlags_ShouldResume) {
// Resume playback of song here!!!
}
}
// Hardware Button Volume Callback
void audioVolumeChangeListenerCallback (
void *inUserData,
AudioSessionPropertyID inID,
UInt32 inDataSize,
const void *inData)
{
UISlider * volumeSlider = (__bridge UISlider *) inUserData;
Float32 newGain = *(Float32 *)inData;
[volumeSlider setValue:newGain animated:YES];
}
// My UISlider Did Change Callback
- (IBAction)volChanged:(id)sender
{
CGFloat oldVolume = [[MPMusicPlayerController applicationMusicPlayer] volume];
CGFloat newVolume = ((UISlider*)sender).value;
// Don't change the volume EVERYTIME but in discrete steps.
// Performance will say "THANK YOU"
if(fabsf(newVolume - oldVolume) > 0.05 || newVolume == 0 || newVolume == 1 )
[[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// Set the volume slider to the correct value on appearance of the view
volSlider.value = [[MPMusicPlayerController applicationMusicPlayer] volume];
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// Activate the session and set teh delegate
[[AVAudioSession sharedInstance] setActive:YES error:nil];
[[AVAudioSession sharedInstance] setDelegate:self];
// Create a customizable slider and add it to the view
volSlider = [[UISlider alloc] init];
CGRect sliderRect = volSlider.frame;
sliderRect.origin.y = 50;
sliderRect.size.width = self.view.bounds.size.width;
volSlider.frame = sliderRect;
[volSlider addTarget:self action:@selector(volChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:volSlider];
// Regoister the callback to receive notifications from the hardware buttons
AudioSessionAddPropertyListener (
kAudioSessionProperty_CurrentHardwareOutputVolume ,
audioVolumeChangeListenerCallback,
(__bridge void*)volSlider
);
[...]
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Remove the Hardware-Button-Listener
AudioSessionRemovePropertyListenerWithUserData(
kAudioSessionProperty_CurrentHardwareOutputVolume,
audioVolumeChangeListenerCallback,
(__bridge void*)volSlider);
}
+0
super réponse :-) – Flori
Questions connexes
- 1. Définir le volume du microphone en C#
- 2. Définir le paramètre reportviwer dans une application
- 3. iPhone Mic volume
- 4. Définir l'onglet Démarrage personnalisé OpenFeint (Application iPhone)
- 5. Comment définir une valeur dans Objective C pour une application iPhone?
- 6. Comment détecter le volume actuel du périphérique audio
- 7. Dimensionnement du matériel - Règles du pouce
- 8. Comment masquer le volume complet?
- 9. Le SDK iPhone permet-il l'accès matériel au connecteur Dock?
- 10. Comment puis-je vérifier sur quel matériel mon application iPhone fonctionne?
- 11. Comment contrôler le volume audio dans .NET 3.5?
- 12. Dimensionnement du matériel
- 13. Modifier le volume sonore à partir du code .net
- 14. Boucle principale dans une application iPhone
- 15. Ouvrir une application iPhone depuis le terminal
- 16. Comment obtenir une référence à l'UITabBar dans une application iPhone
- 17. iPhone Simulator - définir le proxy HTTP
- 18. comment créer une application dés iphone
- 19. Comment puis-je lier mon application à un matériel spécifique?
- 20. Comment lancer Safari depuis une application iPhone?
- 21. Comment ajouter cocos 2d dans une application? - iphone dev
- 22. Où puis-je définir la version de mon application iPhone?
- 23. Utiliser l'API PayPal dans une application iPhone
- 24. Comment gérer correctement applicationWillTerminate dans une application iPhone?
- 25. Icône non aplatie dans une application iPhone
- 26. UITabbarComtroller multiple dans une application iPhone
- 27. iPhone - Pousser le bouton du périphérique de capture
- 28. comment demander un pavé numérique dans une application web iphone?
- 29. Map Application dans iphone
- 30. Comment définir une variable à l'échelle du serveur dans ColdFusion
[MPVolumeView Référence de la classe] (http://developer.apple.com /library/ios/#documentation/MediaPlayer/Reference/MPVolumeView_Class/Reference/Reference.html) – JohnK