Android 手势-控制音量和亮度
我正在尝试建立一个应用程序,使用手势来控制音量和亮度。 我看过的视频很少告诉我如何使用手势,但没有告诉我如何控制音量和亮度。我的主要目标是,当我在屏幕左侧轻扫时,它控制音量,如果我在屏幕右侧轻扫,它控制亮度。 我发现使用手势的唯一代码是:Android 手势-控制音量和亮度,android,gestures,Android,Gestures,我正在尝试建立一个应用程序,使用手势来控制音量和亮度。 我看过的视频很少告诉我如何使用手势,但没有告诉我如何控制音量和亮度。我的主要目标是,当我在屏幕左侧轻扫时,它控制音量,如果我在屏幕右侧轻扫,它控制亮度。 我发现使用手势的唯一代码是: class MyGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onDown(MotionEvent
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDown(MotionEvent event) {
Log.d("TAG","onDown: ");
// don't return false here or else none of the other
// gestures will work
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Log.i("TAG", "onSingleTapConfirmed: ");
return true;
}
@Override
public void onLongPress(MotionEvent e) {
Log.i("TAG", "onLongPress: ");
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.i("TAG", "onDoubleTap: ");
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
Log.i("TAG", "onScroll: ");
return true;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d("TAG", "onFling: ");
return true;
}
}
}
你知道我从哪里开始吗?这是我在SO的第一个答案。我在这里发布了一些控制音量的代码。此代码将OnTouchListener用于触摸事件,而不是手势检测器 也许这会有帮助
//variable
private RelativeLayout mRlTouch;
private boolean intLeft, intRight;
private int sWidth, sHeight;
private long diffX, diffY;
private Display display;
private Point size;
private float downX, downY;
private AudioManager mAudioManager;
//onCreate method
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_volume_and_brightness_prac);
///THIS LAYOUT IMPLEMENT TOUCH EVENT
mRlTouch = findViewById(R.id.rl_volume_touch);
mAudioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
}
///THIS METHOD FOR GET SCREEN SIZE
/// USE FOR DETECT SCREEN SIDE
private void getScreenSize() {
display = getWindowManager().getDefaultDisplay();
size = new Point();
display.getSize(size);
sWidth = size.x;
sHeight = size.y;
}
/////onTouch method
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//touch is start
downX = event.getX();
downY = event.getY();
if (event.getX() < (sWidth / 2)) {
//here check touch is screen left or right side
intLeft = true;
intRight = false;
} else if (event.getX() > (sWidth / 2)) {
//here check touch is screen left or right side
intLeft = false;
intRight = true;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_MOVE:
//finger move to screen
float x2 = event.getX();
float y2 = event.getY();
diffX = (long) (Math.ceil(event.getX() - downX));
diffY = (long) (Math.ceil(event.getY() - downY));
if (Math.abs(diffY) > Math.abs(diffX)) {
if (intLeft) {
//if left its for brightness
if (downY < y2) {
//down swipe brightness decrease
} else if (downY > y2) {
//up swipe brightness increase
}
} else if (intRight) {
//if right its for audio
if (downY < y2) {
//down swipe volume decrease
mAudioManager.adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND);
} else if (downY > y2) {
//up swipe volume increase
mAudioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND);
}
}
}
}
return true;
}
您没有提到亮度,它是如何检测屏幕大小的?