android - subir - descargar volumen para celular
Control de volumen en la aplicaciĆ³n de Android (4)
Me gustaría saber cómo controlar el volumen de mi aplicación desde las teclas de volumen (contrariamente a mi creencia, he leído que controlan solo el volumen del timbre). ¿Debo sobrescribir la tecla abajo / arriba?
¿O hay otra forma de lograr esto? Pregunto porque si sobrescribo la función mencionada arriba para una actividad, entonces las funciones recibirán el evento solo si una vista asociada con esta actividad tiene el foco, y estoy buscando algo "Globaly" (para trabajar sin importa qué actividad se está ejecutando ahora)
En su actividad, puede usar uno de los siguientes:
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
this.setVolumeControlStream(AudioManager.STREAM_RING);
this.setVolumeControlStream(AudioManager.STREAM_ALARM);
this.setVolumeControlStream(AudioManager.STREAM_NOTIFICATION);
this.setVolumeControlStream(AudioManager.STREAM_SYSTEM);
this.setVolumeControlStream(AudioManager.STREAM_VOICECALL);
Espero que este código de Android funcione y te ayude a desarrollar tu propia aplicación de control de volumen:
public class audioSetting extends Activity {
Button b;
TextView t;
SeekBar s;
EditText e;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button)findViewById(R.id.button1);
s = (SeekBar)findViewById(R.id.seekBar1);
e = (EditText)findViewById(R.id.editText1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int a = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
int c = audioManager.getStreamVolume(AudioManager.STREAM_RING);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
audioManager.setStreamVolume(AudioManager.STREAM_RING, (int)(Integer.parseInt(e.getText().toString().trim())), 0);
s.setProgress((int)(Integer.parseInt(e.getText().toString().trim())));
}
});
s.setMax(a);
s.setProgress(c);
e.setText(""+c);
s.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_RING, arg1, 0);
e.setText(""+s.getProgress());
}
});
}
}
Esta es una vieja pregunta, pero hay una excelente biblioteca para manejar el control de volumen en Android (incluso mejor que los botones de volumen, que están limitados a 5 incrementos de nivel de volumen).
http://code.google.com/p/media-volume-control
Eche un vistazo a http://code.google.com/p/media-volume-control , proporciona un nivel de volumen continuo y otras funciones agradables (como cuando se interrumpe el audio, se le notifica al monitor de volumen si el nivel de volumen se cambia por cualquier medio) cuando se muestra un volumen SeekBar , etc.)
Hubo otra pregunta de hace mucho tiempo que preguntaba lo mismo. Básicamente, la respuesta es: no anule los botones onKeyDown y onKeyUp. Es mucho mejor simplemente usar esta línea setVolumeControlStream(AudioManager.STREAM_MUSIC);
en su método onCreate () Eso le dice al SO que los botones de volumen deberían afectar el volumen de "medios" cuando su aplicación está visible, y ese es el volumen que usa para su aplicación.
En cuanto al control del volumen multimedia, sin importar qué aplicación sea visible, no estoy seguro de que se pueda hacer, o si pudiera, si eso sería bueno.