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 秒)。

私のボタン「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 に答える