2011-09-18 49 views

Trả lời

18

Thêm phần này vào OnCreate của bạn, bạn cần phải đặt seekbar của bạn vào file layout xml:

audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
    int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
    SeekBar volControl = (SeekBar)findViewById(R.id.volbar); 
    volControl.setMax(maxVolume); 
    volControl.setProgress(curVolume); 
    volControl.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_MUSIC, arg1, 0); 
     } 
    }); 
+0

Làm cách nào để tôi thực hiện việc này nếu âm thanh của tôi bắt đầu ở nơi khác (tức là trong dịch vụ)? Tôi nhận được một NullPointerException trong onProgressChanged khi tôi cố gắng di chuyển thanh. – ShadowGod

+0

Có lẽ bạn nên đặt câu hỏi này vào một câu hỏi riêng. Bạn có thể sẽ phải gọi vào dịch vụ của bạn để điều chỉnh âm lượng. –

+0

Tôi hiểu. Cảm ơn Alan đã phản hồi nhanh! – ShadowGod

0

Sáu năm sau, phiên bản thay đổi nhỏ này hoạt động cho tôi trong Android Studio 3.1. IDE cho biết tôi phải khai báo AudioManager final:

 /* volume slider*/ 
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
SeekBar volControl = (SeekBar)findViewById(R.id.volControl); 
volControl.setMax(maxVolume); 
volControl.setProgress(curVolume); 
volControl.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_MUSIC, arg1, 0); 
    } 
}); 

//end Volume slider 
Các vấn đề liên quan