Per rispondere alla domanda di brush51:
Come posso fare questo? basta cambiare il volume del DISPOSITIVO?
Come 0x7fffffff suggerito:
Non è possibile modificare il volume del dispositivo programatically, tuttavia MPVolumeView (cursore del volume) è lì per cambiare volume del dispositivo, ma solo attraverso l'interazione dell'utente.
Quindi, Apple consiglia di utilizzare MPVolumeView
, così mi si avvicinò con questo:
Aggiungi volumeSlider
proprietà:
@property (nonatomic, strong) UISlider *volumeSlider;
Init MPVolumeView
e aggiungere qualche parte per la visualizzazione (può essere nascosto, senza cornice oppure vuoto a causa di showsRouteButton = NO
e):
MPVolumeView *volumeView = [MPVolumeView new];
volumeView.showsRouteButton = NO;
volumeView.showsVolumeSlider = NO;
[self.view addSubview:volumeView];
Trovare e salvare riferimento a UISlider
:
__weak __typeof(self)weakSelf = self;
[[volumeView subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UISlider class]]) {
__strong __typeof(weakSelf)strongSelf = weakSelf;
strongSelf.volumeSlider = obj;
*stop = YES;
}
}];
Aggiungi azione obiettivo per UIControlEventValueChanged
:
[self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];
E poi di rilevare il volume cambia (vale a dire dai controlli di volume hardware):
- (void)handleVolumeChanged:(id)sender
{
NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
}
e anche viceversa, è possibile impostare il volume da:
self.volumeSlider.value = < some value between 0.0f and 1.0f >;
Spero che questo aiuti (e che Apple non rimuove MPVolumeSlider da MPVolumeView).
Nota: questo è obsoleto in iOS 7 –
http://stackoverflow.com/a/24993026/2380455 – ambientlight