2012-04-04 9 views
1

「OnLongClickEvent」が検出されたときに、アプリケーションでメディアボリュームを下げる(または上げたい)場合があります。ボタンを使用してメディアボリュームを連続的に下げる

ここに私の情報源:

buttongauche.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View v) { 
       playSound(R.raw.volumevoixdiminue); 
       audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,AudioManager.FLAG_SHOW_UI); 
       return true; 
      } 
     }); 

実は、それは仕事だ:私は私の「buttongauche」にlongClickを行う際に、ボリュームは今、私があれば何ができるか知りたいのですが1 だけ減少します私は音を連続的に下げたい(例えば、ボタンが押されているときに2秒ごとに音を1減らす)。

マイボタン「buttongauche」にはすでに「onClickEvent」があり、他の操作(メニューのインデックスを変更)を行います。あなたがボタンに触れると、それを変更するOnTouchListenerを使用しているかどうかと言う

おかげ

答えて

2

宣言フィールドboolean touching = false;。あなたが触れ始めると、volumeThreadも1秒ごとに音量を下げて開始し、触れるのをやめると死ぬ。

buttongauche.setOnTouchListener(new View.OnTouchListener() {  

    public boolean onTouch(View v, MotionEvent event) {    
     switch (event.getAction()) {        
     case MotionEvent.ACTION_DOWN:        
      touching = true;          
      Thread volumeThread = new Thread() {     
       public void run() {          
        while (touching) {        
         audio.adjustStreamVolume(     
           AudioManager.STREAM_MUSIC,   
           AudioManager.ADJUST_LOWER,   
           AudioManager.FLAG_SHOW_UI);  
         try {          
          sleep(1000);       
         } catch (InterruptedException e) {   
          e.printStackTrace();     
         }           
        }            
       }             
      };              
      volumeThread.start();         
      break;             
     case MotionEvent.ACTION_UP:         
      touching = false;          
      break;             
     }               
     return false;            
    }                
});   
関連する問題