2014-01-10 29 views
0

如何連接硬件設備的按鈕與尋求用於音量吧? 所以我上的硬件按鈕點擊例如增加音量,尋求酒吧增加以及和反之亦然連接硬件設備按鈕,搜索欄

public 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(); 
    } 

} 
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) 
    { 
      int index = seekbar1.getProgress(); 
      seekbar1.setProgress(index + 1); 
      return true; 
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
     { 
      int index = seekbar1.getProgress(); 
      seekbar1.setProgress(index - 1); 
      return true; 
    } 
     return super.onKeyDown(keyCode, event); 
    } 

下面是編輯的代碼,我得到錯誤的方法,每一次的onkeydown(INT,的keyEvent)是未定義類型對象。

+0

嘿夥計,請編寫代碼了當前塊的....讓seekbars全球和訪問有相應的價值... whay您使用的關鍵事件setOnSeekBarChangeListener..please代碼寫出來的這一側...以這樣一種方式編寫它們平行於生命週期方法 –

+0

公共類MainActivity延伸活動{ @覆蓋 公共布爾的onkeydown(INT的keyCode,KeyEvent的事件){ super.onKeyDown(鍵代碼,事件); 如果(的keyCode == KeyEvent.KEYCODE_BACK){// 您的代碼在這裏 迴歸真實; } 返回FALSE; } } –

+0

它應該在主要活動內部... –

回答

0

通過覆蓋有這樣的按鈕輸入;

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
     // Do your thing 
     return true; 
    } else { 
     return super.onKeyDown(keyCode, event); 
    } 
} 
1
public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) 
     { 
       mediaVlmSeekBar = (SeekBar) findViewById(R.id.seekBar1); 
       int index = mediaVlmSeekBar.getProgress(); 
       mediaVlmSeekBar.setProgress(index + 1); 
       return true; 
     } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) 
      { 
       int index = mediaVlmSeekBar.getProgress(); 
       mediaVlmSeekBar.setProgress(index - 1); 
       return true; 
     } 
      return super.onKeyDown(keyCode, event); 
     } 
+0

你能解釋_why_這個答案? – Ben

+0

當我們點擊硬件按鍵,按鍵VOLUME_UP或VOLUME_DOWN呼叫轉到的onkeydown方法,你可以把你的代碼中的onkeydown的增加量與使用的KeyEvent尋求酒吧隨之提高,反之亦然 –

相關問題