我想通过在屏幕上滑动来控制音量,但问题是我无法找到合适的滑动速度。有时只需轻轻滑动即可波动太大,反之亦然。我尝试了许多不同的滑动速度,但仍然无法顺利工作。如何将其更改为按预期工作?这是实现
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
int halfWidth = getWindow().getDecorView().getWidth() / 2;
boolean result = false;
AudioManager mAudioManager;
int SWIPE_THRESHOLD = 100;
int SWIPE_VELOCITY_THRESHOLD = 100;
if (e1.getX() > halfWidth) {
int swipeVolume = (int) ((Math.abs(diffY) - SWIPE_THRESHOLD) / SWIPE_VELOCITY_THRESHOLD);
if (diffY > 0) {
onSwipeBottom(swipeVolume);
} else {
onSwipeTop(swipeVolume);
}
result = true;
}
private void onSwipeTop(int increaseVolume) {
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int nextVolume = currentVolume + increaseVolume;
if (nextVolume > maxVolume) {
nextVolume = maxVolume;
}
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nextVolume, AudioManager.ADJUST_RAISE);
}
private void onSwipeBottom(int decreaseVolume) {
int minVolume = mAudioManager.getStreamMinVolume(AudioManager.STREAM_MUSIC);
int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int nextVolume = currentVolume - decreaseVolume;
if (nextVolume < minVolume) {
nextVolume = 0;
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nextVolume, 0);
} else {
nextVolume = nextVolume;
}
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nextVolume, 0);
}