使用按钮连续降低媒体音量

时间:2012-04-04 15:27:42

标签: java android events button listener

我希望在" 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"进行长时间点击时,音量减少1。 现在我想知道如果我想连续降低声音我该怎么办(例如,当按钮关闭时,每2次减少声音减少1次。)

我的按钮" buttongauche"已经有一个" onClickEvent",谁做其他事情(更改菜单的索引)。

谢谢

1 个答案:

答案 0 :(得分:2)

声明字段boolean touching = false;,说明您是否正在触摸按钮并使用OnTouchListener进行更改。当你开始触摸时也开始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;                                              
    }                                                              
});