Para responder a la pregunta de brush51:
¿Cómo puedo hacer eso? solo cambia el volumen del DISPOSITIVO?
Como 0x7fffffff sugirió:
No se puede cambiar el volumen del dispositivo mediante programación, sin embargo MPVolumeView (control de volumen) está ahí para cambiar el volumen del dispositivo, pero sólo a través de la interacción del usuario.
Así, Apple recomienda el uso de MPVolumeView
, por lo que se le ocurrió esto:
Añadir volumeSlider
propiedad:
@property (nonatomic, strong) UISlider *volumeSlider;
Init MPVolumeView
y añadir algún lugar a la vista (se puede ocultar, sin cuadro , o vacío debido a showsRouteButton = NO
y showsVolumeSlider = NO
):
MPVolumeView *volumeView = [MPVolumeView new];
volumeView.showsRouteButton = NO;
volumeView.showsVolumeSlider = NO;
[self.view addSubview:volumeView];
Encontrar y guardar referencia 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;
}
}];
acción Agregar objetivo para UIControlEventValueChanged
:
[self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];
Y luego detectar el volumen cambiante (es decir, por los controles de volumen de hardware):
- (void)handleVolumeChanged:(id)sender
{
NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
}
y también revés, puede establecer el volumen por:
self.volumeSlider.value = < some value between 0.0f and 1.0f >;
Espero que esto ayude (y que Apple no elimina MPVolumeSlider de MPVolumeView).
Nota: esto está en desuso en iOS 7 –
http://stackoverflow.com/a/24993026/2380455 – ambientlight