me habría cuidado llamando setValue
en una MPVolumeView
ya que probablemente no va a hacer otra cosa que actualizar el aspecto de la corredera de cualquier cosa, pero no el nivel de volumen del dispositivo real. En su lugar, tendrá que llamar al _commitVolumeChange
, que es una API privada y probablemente le rechace su aplicación.
Una breve respuesta a cómo controlar el volumen: realmente depende de lo que está tratando de controlar el volumen de.
Si quieres un "controles cada sonido dentro de la aplicación" tipo de control, entonces usted puede utilizar un MPVolumeView
pero no puede cambiar su valor mediante programación. Entonces, solo podrá cambiar el volumen moviendo el control deslizante con un toque o utilizando los botones de volumen en el costado del dispositivo. Lo mejor que puede hacer es crear un objeto global que almacene el nivel de volumen que puede leer cualquiera de sus objetos antes de reproducir su sonido.
Si se trata de un objeto AVAudioPlayer
, debe crear el objeto y usar [theAudioPlayerObject setVolume: someFloat];
donde someFloat
tiene un valor entre 0.0 y 1.0.
Si se trata de un objeto SystemSound
, no puede controlar el volumen.
Si se trata de un AudioQueue
que lo cambiaría a través AudioQueueSetParameter
Como dije .. todo depende de cómo se reproduce el sonido.
Actualización basada en comentario
For that particular example, se debe establecer el volumen de esta manera:
Añadir a la AudioStreamer.archivo h
- (void)setVolume:(float)Level;
Añadir al archivo AudioStreamer.m
- (void)setVolume:(float)Level
{
OSStatus errorMsg = AudioQueueSetParameter(audioQueue, kAudioQueueParam_Volume, Level);
if (errorMsg) {
NSLog(@"AudioQueueSetParameter returned %d when setting the volume.", errorMsg);
}
}
Añadir al controlador de vista de donde estará el mando de volumen (esto va en el .m archivo ... acabo de hacer esto como un par de UIButtons muy rápido, tendrá que hacer lo suyo) y configurar un IBAction para cambiar el volumen de un valor determinado (puede pasar de 0.0 a 1.0 como un flotador)
- (IBAction)volumeUp:(id)sender
{
[streamer setVolume:1.0];
}
- (IBAction)volumeDown:(id)sender
{
[streamer setVolume:0.0];
}
Quiero controlar el volumen de mi aplicación. Estoy tratando de hacer una aplicación usando clases matt gallagher sobre cómo transmitir una fuente mp3 http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html – awlcs
Ver mi respuesta actualizada – iwasrobbed
Muchas gracias, lo intentaré: D Soy bastante nuevo en la programación de iphone: D gracias: D – awlcs