【问题标题】:Android: How to control volume: if volume button up, SeekBar upAndroid:如何控制音量:如果音量按钮向上,SeekBar 向上
【发布时间】:2012-07-12 09:13:31
【问题描述】:

我的 SeekBar 有以下代码:

setVolumeControlStream(AudioManager.STREAM_MUSIC);

            final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
            int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.dialog_root_element));


            SeekBar volControl = (SeekBar)alert.findViewById(R.id.dialog_seekbar);

            volControl.setMax(maxVolume);
            volControl.setProgress(curVolume);
            volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onStopTrackingTouch(SeekBar arg0) {
                }

                @Override
                public void onStartTrackingTouch(SeekBar arg0) {
                }

                @Override
                public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
                }
            });

问题是当用户决定使用音量设备按钮时,我的 SeekBar 也向上或向下。

实际上,使用此代码,我可以正确使用两种方法(设备按钮和代码)控制音量,但是当我使用音量设备按钮时,我的 SeekBar 是静态的。

有什么想法或建议吗?

谢谢!

【问题讨论】:

    标签: android volume seekbar


    【解决方案1】:

    您可以通过阅读以下讨论来解决此问题。

    Is there a listener to listen for changes in the volume in android?

    Taking over the volume key on Android

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      检查以下答案:

        public boolean onKeyDown(int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) 
               { 
                    mediaVlmSeekBar = (SeekBar) findViewById(R.id.seekBar1);
                      int index = mediaVlmSeekBar.getProgress(); 
                      mediaVlmSeekBar.setProgress(index + 1); 
                      return true; 
               } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
                {
                      int index = mediaVlmSeekBar.getProgress(); 
                      mediaVlmSeekBar.setProgress(index - 1); 
                      return true; 
               }
                return super.onKeyDown(keyCode, event); 
               }
      

      【讨论】:

        猜你喜欢
        • 2012-03-28
        • 2015-10-28
        • 2012-04-25
        • 1970-01-01
        • 2013-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多