2012-05-18 153 views
0

这是我的代码,用于控制两个seekbars在媒体播放器中为两个同时播放的声音设置音量控制。但是音轨在seekbar的进度变化上打开和关闭,在进度变化时不会频繁增加或减少音量。我错在哪里?媒体播放器错误

audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 

     int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
     int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 

     volume2 = (SeekBar)findViewById(R.id.volbar2); 
     volume1 = (SeekBar)findViewById(R.id.volbar); 


     volume1.setMax(maxVolume); 
     volume2.setMax(maxVolume); 
     volume1.setProgress(curVolume); 
     volume2.setProgress(curVolume); 

     volume1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 


       } 
      @Override 
      public void onStartTrackingTouch(SeekBar arg0) { 

      } 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean arg2) { 

       if(seekBar.equals(volume1)){ 

        mediaPlayer.setVolume(progress,progress); 

        Toast.makeText(getApplicationContext(), ""+progress+progress, 1).show(); 

         } 

      } 
      }); 

     volume2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

      public void onStopTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      public void onStartTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { 
       // TODO Auto-generated method stub 
       if(seekBar.equals(volume2)){ 
        mediaPlayer2.setVolume(progress,progress); 
      } 

      } 
     }); 
+0

尝试设置您的mediaplayer音量,如: - 'mediaPlayer.setVolume((progress/100.0f),(progress/100.0f));'。我不确定,但你可以做一些像这样的希望。 – Deepak

+0

您好Deepak您的帖子对我有帮助,但它有创建另一个问题时,我减少搜索栏然后音量正在减少,但进展增加它不是增加量在实际状态...我不明白这种情况发生.. –

回答

0

我认为mediaplayer.setVolume()希望有0.0F和1.0F之间的值,因此其相对卷到卷audiomanagers

0

@Ankush嗨,其实我使用解决了这个问题,我的项目以下代码:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    Log.w("MovingProgressBar","Progress change to: " + progress); 
    try { 
     if (seekBar == seekMusic){ 
      musicCurrentVol = (float) (progress/100.0); 
      musicPlayer.setVolume(musicCurrentVol, musicCurrentVol); 
     } else if (seekBar == seekIns) { 
      insCurrentVol = (float) (progress/100.0); 
      insPlayer.setVolume(insCurrentVol, insCurrentVol); 
     } 
    } catch (Exception e) { 
     Log.w("MovingProgressBar:", "Progress not change: " + e); 
    } 
} 

这对我很有用。希望这也适用于你。