2012-04-04 16 views
1

Ich möchte meine Medien-Lautstärke in meiner Anwendung senken (oder höher), wenn ein "OnLongClickEvent" erkannt wird.Senken Sie kontinuierlich meine Medien-Lautstärke mit einer Taste

Hier meine Quellen:

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

Eigentlich ist es Arbeit: wenn ich einen longClick auf meiner „buttongauche“ tun, wird das Volumen um 1 verringert Jetzt würde ich gerne wissen, wie kann ich tun, wenn Ich möchte den Ton kontinuierlich absenken (z. B. Ton alle 2 Sekunden um 1 verringern, wenn die Taste gedrückt ist).

Meine Schaltfläche "buttongauche" hat bereits einen "onClickEvent", der andere Dinge tut (den Index eines Menüs ändern).

Dank

Antwort

2

Declare Feld boolean touching = false;, der sagt, ob Sie die Taste berühren und OnTouchListener es zu ändern verwenden. Wenn Sie anfangen zu berühren, starten Sie auch volumeThread, die die Lautstärke alle 1 Sekunde verringert und stirbt, wenn Sie aufhören zu berühren.

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;            
    }                
});   
Verwandte Themen