我已经在屏幕两侧创建了一个带有媒体播放器的DJ节目(如下图所示)
移动时这两者之间的搜索栏应该增加一个媒体播放器的音量并分别减少其他媒体播放器的音量。当我非常慢地拖动它时效果很好,问题是当我更快地移动它时。 当拖得更快时,音量不会总是减少到最后,或者根本不会减小,超速时音量根本不会改变。 这是代码:
private void initiateSeekBar()
{
try
{
volumeSeekbar = (SeekBar)findViewById(R.id.seekBar);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//volumeSeekbar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
//volumeSeekbar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));
final int initVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
final int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,maxVolume, 0);
volumeSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onStopTrackingTouch(SeekBar arg0)
{
}
@Override
public void onStartTrackingTouch(SeekBar arg0)
{
}
@Override
public void onProgressChanged(SeekBar arg0, int progress, boolean arg2)
{
float volume = (float) (1 - (Math.log(100 - progress) / Math.log(100)));
//audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
if (volume <= 0.05) {
volume = 0;
}
System.out.println("\nVolume: \n" + volume);
if (mediaplayerLeft != null) {
mediaplayerLeft.setVolume(1 -volume, 1 - volume);
}
if (mediaplayerRight != null) {
mediaplayerRight.setVolume(volume, volume);
}
}
});
}
catch (Exception e)
{
e.printStackTrace();
}
}
为什么会这样?那是搜索栏的工作原理还是我的代码有问题?