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。现在我想知道如果我想连续降低声音我该怎么做(例如,每次减1声音按钮按下时 2 秒)。

我的按钮“buttongauche”已经有一个“onClickEvent”,它可以做其他事情(更改菜单的索引)。

谢谢

4

1 回答 1

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;                                              
    }                                                              
});        
于 2012-04-04T16:00:27.380 回答