java - 用一个按钮连续降低我的媒体音量

标签 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”,它可以做其他事情(更改菜单的索引)。

谢谢

最佳答案

声明字段 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;                                              
    }                                                              
});        

关于java - 用一个按钮连续降低我的媒体音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10014295/

相关文章:

java - 将 json 数组反序列化为列表并保留列表中 json 的数组顺序

android - 设置android actionbar的背景颜色

vba - 如何使 application.reminder 事件起作用?

java - 在 spring 中,确保在调度事件之前实例化 Guava Event Bus 监听器 bean

java - 通过java程序在mysql中创建备份出错

java - 如何检测两个图像是否在 Java 中发生碰撞?

java - HTML 音频标签在 apache tomcat 的 localhost 中不起作用

android - 我们如何设置折叠底部的最小高度

android - 如何以编程方式设置 TextView 的文本颜色?

c# - 委托(delegate)和事件之间有什么区别?