我试图控制VLC媒体播放器在Android上的音量。这是一个如何运作的例子。
但是我不确定数学,这是我尝试过的
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
int volume_level= audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int max_volume = audioManager.getStreamMaxVolume(audioManager.STREAM_MUSIC);
int changeVolumeBy = volume_level;
int movement = (int) (e1.getY() - e2.getY());
if ((Math.abs(e1.getY() - e2.getY())) > 100) {
if (e1.getY() < e2.getY()) {
// down
changeVolumeBy = Math.abs((Resources.getSystem().getDisplayMetrics().widthPixels / movement));
} else if ((e1.getY() > e2.getY())) {
// up
changeVolumeBy = (Resources.getSystem().getDisplayMetrics().widthPixels / movement);
}
if (changeVolumeBy > max_volume) {
changeVolumeBy = max_volume;
} else if (changeVolumeBy < 0) {
changeVolumeBy = 0;
}
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, changeVolumeBy, 0);
}
return true;
}
问题是音量没有线性变化,它达到峰值并且不是非常可靠。
我的问题:我是否使用了适当的方法,或者我的方式是否存在缺陷?