2011-09-18 46 views
10

有人可以給我一個示例代碼,通過滑塊更改音量? 我搜索了很多教程,需要我創建一個全新的課程。有更容易的方法嗎?創建滑塊更改android音量?

謝謝!

回答

18

添加到您的OnCreate,你必須把你的搜索條到佈局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

如果我的音頻從別處開始(即在服務中),我該如何做到這一點?當我嘗試移動欄時,出現onProgressChanged中的NullPointerException。 – ShadowGod

+0

你應該把這個放在一個單獨的問題中。您可能不得不打電話進入您的服務來調整音量。 –

+0

我明白了。感謝Alan快速回復! – ShadowGod

0

六年後,這個稍微改變的版本適用於我在Android Studio 3.1。 IDE說我必須聲明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