¿Cómo puedo cambiar con precisión el volumen de mi aplicación utilizando una barra de búsqueda sin controlar el volumen con los botones de volumen en mi dispositivo Android? Tengo una función separada en las teclas de volumen de mi Android, por eso quiero usar una barra de búsqueda para controlar el volumen. ¿Alguien puede ayudarme por favor?Usando SeekBar para controlar el volumen en android?
Respuesta
Por favor, mira el siguiente código. Soluciona tu problema
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class TestExample extends Activity
{
/** Called when the activity is first created. */
private SeekBar volumeSeekbar = null;
private AudioManager audioManager = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
setContentView(R.layout.main);
initControls();
}
private void initControls()
{
try
{
volumeSeekbar = (SeekBar)findViewById(R.id.seekBar1);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
volumeSeekbar.setMax(audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
volumeSeekbar.setProgress(audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC));
volumeSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onStopTrackingTouch(SeekBar arg0)
{
}
@Override
public void onStartTrackingTouch(SeekBar arg0)
{
}
@Override
public void onProgressChanged(SeekBar arg0, int progress, boolean arg2)
{
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
progress, 0);
}
});
}
catch (Exception e)
{
e.printStackTrace();
}
}
Gracias, funciona perfectamente Chirag Raval !! –
@NielPrince, eres siempre bienvenido. –
Eclipse me dice que elimine las anotaciones @Override ... y no funciona después de hacerlo. Por favor, ayuda – Droidman
Esto es un View
personalizado que he usado para ajustar el nivel de volumen. Funciona deslizando el dedo hacia arriba, pero podría cambiarlo fácilmente.
SliderView
public class SliderView extends View implements OnGestureListener, OnTouchListener {
private int mHeight = 0;
private int mMaxValue = 16;
private float mDelta = 0;
private int mColor = Color.WHITE;
private GestureDetector mGestureDetector;
private OnValueChangeListener mListener;
public SliderView(Context context) {
super(context);
init(context);
}
public SliderView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SliderView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
@Override
public boolean onDown(MotionEvent e) {
mDelta = 0;
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
mDelta = 0;
}
@Override
public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, float distanceY) {
if (mDelta >= 1 || mDelta <= -1) {
if (mListener != null) {
mListener.onValueChanged((int) mDelta);
}
mDelta = 0;
} else {
mDelta += mMaxValue * distanceY/mHeight * 2;
}
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public void onSizeChanged(int w, int h, int oldw, int oldh) {
mHeight = getHeight();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if (action == MotionEvent.ACTION_DOWN) {
v.setBackgroundColor(Color.argb(0x33, Color.red(mColor), Color.green(mColor),
Color.blue(mColor)));
} else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
v.setBackgroundColor(Color.TRANSPARENT);
}
mGestureDetector.onTouchEvent(event);
return true;
}
public void setColor(int color) {
mColor = color;
}
public void setMax(int max) {
mMaxValue = max;
}
public void setOnValueChangeListener(OnValueChangeListener listener) {
mListener = listener;
}
private void init(Context context) {
setOnTouchListener(this);
mGestureDetector = new GestureDetector(context, this);
mHeight = getHeight();
}
public interface OnValueChangeListener {
void onValueChanged(int value);
}
}
Su uso - asegúrese de que implemente OnValueChangeListener
.
SliderView mSlider;
mSlider= (SliderView) findViewById(id);
mSlider.setOnValueChangeListener(this);
mSlider.setMax(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
No es exactamente lo que estás pidiendo, pero definitivamente debería ayudarte, creo.
@CommonsWare hacerlo de esta manera en https://github.com/commonsguy/cw-omnibus/tree/master/SystemServices/Volume y también establecer cinco tipos de volumen utilizando SeekBar
Manejo de cinco tipos diferentes de volumen
/***
Copyright (c) 2008-2012 CommonsWare, LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required
by applicable law or agreed to in writing, software distributed under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License.
From _The Busy Coder's Guide to Android Development_
http://commonsware.com/Android
*/
package com.commonsware.android.syssvc.volume;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.widget.SeekBar;
public class Volumizer extends Activity {
SeekBar alarm=null;
SeekBar music=null;
SeekBar ring=null;
SeekBar system=null;
SeekBar voice=null;
AudioManager mgr=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mgr=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
alarm=(SeekBar)findViewById(R.id.alarm);
music=(SeekBar)findViewById(R.id.music);
ring=(SeekBar)findViewById(R.id.ring);
system=(SeekBar)findViewById(R.id.system);
voice=(SeekBar)findViewById(R.id.voice);
initBar(alarm, AudioManager.STREAM_ALARM);
initBar(music, AudioManager.STREAM_MUSIC);//for Volume this is neccessary
initBar(ring, AudioManager.STREAM_RING);
initBar(system, AudioManager.STREAM_SYSTEM);
initBar(voice, AudioManager.STREAM_VOICE_CALL);
}
private void initBar(SeekBar bar, final int stream) {
bar.setMax(mgr.getStreamMaxVolume(stream));
bar.setProgress(mgr.getStreamVolume(stream));
bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar bar, int progress,
boolean fromUser) {
mgr.setStreamVolume(stream, progress,
AudioManager.FLAG_PLAY_SOUND);
}
public void onStartTrackingTouch(SeekBar bar) {
// no-op
}
public void onStopTrackingTouch(SeekBar bar) {
// no-op
}
});
}
}
y para el control de volumen sólo se use solo
music=(SeekBar)findViewById(R.id.music);
y initBar(music, AudioManager.STREAM_MUSIC);
- 1. Android SeekBar para controlar el progreso de MediaPlayer
- 2. Cómo controlar el volumen del sistema usando javascript
- 3. ¿Cómo controlar el volumen de los medios?
- 4. Android SeekBar setOnSeekBarChangeListener
- 5. Android media player seekbar
- 6. Android Eliminar SeekBar Antecedentes
- 7. Android usando intenciones para controlar el reproductor multimedia?
- 8. Android SeekBar Flipped Horizontally
- 9. Android SeekBar Valor mínimo
- 10. Android SeekBar thumb Personalización
- 11. ajustar el volumen de una aplicación Android
- 12. Android SeekBar establece el valor de progreso
- 13. El volumen de Android MediaPlayer es muy bajo (volumen ajustado)
- 14. No se puede configurar el volumen en BlackBerry Playbook
- 15. ¿Cambiar tamaño de Android-Seekbar?
- 16. Control de volumen en la aplicación Android
- 17. ¿Aumenta el volumen en mac usando AppleScript?
- 18. bordes rectangulares para SeekBar encargo
- 19. Marca Android SeekBar donde están los valores
- 20. ¿Cómo usar una Seekbar en Android como seekBar, así como una barra de progreso simultáneamente?
- 21. Cómo configurar un Android SeekBar para ser inmóvil/congelado?
- 22. Android SeekBar thumb obtiene recortado/cortado
- 23. Android Seekbar: ¿solo permite cambiar con el pulgar?
- 24. crear control deslizante para cambiar el volumen de Android?
- 25. Cómo establecer el progreso de Android SeekBar dibujable programáticamente
- 26. Grabar con alto volumen en android
- 27. ¿Hay un oyente que escuche los cambios en el volumen en Android?
- 28. Herramienta para controlar el tráfico HTTP
- 29. Capturar valores de SeekBar
- 30. setProgressDrawable llena toda seekBar
http://stackoverflow.com/questions/11095576/change-media-player-volume-on-seekbar/22039786#22039786 –