您的位置:首页 > 移动开发 > Android开发

【Android】Android实现视频播放的时候滑动屏幕调节亮度和音量

2016-12-09 13:39 2807 查看
  当我们用手机看视频的时候有时候需要调节音量和亮度,但是要把播放器方法哦后台再去调节就显得很不方便,因此在当前播放界面上滑动屏幕到达调节亮度和音量的效果是必要也是必须的。

  在播放的界面的onTouchEvent方法中这样写:

@Override
public boolean onTouchEvent(MotionEvent event) {
//3.把事件传递给手势识别器
detector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://手指按下
//1.按下记录值
startY = event.getY();
startX = event.getX();
mVol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
touchRang = Math.min(screenHeight, screenWidth);//screenHeight
handler.removeMessages(HIDE_MEDIACONTROLLER);

break;
case MotionEvent.ACTION_MOVE://手指移动
//2.移动的记录相关值
float endY = event.getY();
float endX = event.getX();
float distanceY = startY - endY;

if (endX < screenWidth / 2) {
//左边屏幕-调节亮度
final double FLING_MIN_DISTANCE = 0.5;
final double FLING_MIN_VELOCITY = 0.5;
if (distanceY > FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {
setBrightness(10);
}
if (distanceY < FLING_MIN_DISTANCE && Math.abs(distanceY) > FLING_MIN_VELOCITY) {
setBrightness(-10);
}
} else {
//右边屏幕-调节声音
//改变声音 = (滑动屏幕的距离: 总距离)*音量最大值
float delta = (distanceY / touchRang) * maxVoice;
//最终声音 = 原来的 + 改变声音;
int voice = (int) Math.min(Math.max(mVol + delta, 0), maxVoice);
if (delta != 0) {
isMute = false;
updateVoice(voice, isMute);
}
}
break;
case MotionEvent.ACTION_UP://手指离开
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROLLER, 5000);
break;
}
return super.onTouchEvent(event);
}
 也就是说,当我们播放视频的时候在屏幕左半边上下滑动可以调节亮度,在屏幕右半边上下滑动可以调节音量。实现的方法就是通过比例的运算来实现的,滑动的距离/总距离 = 改变的音量/系统最大音量,再令当前音量=原来音量+改变的音量就实现了音量的调节,亮度的调节也是如此。

其中updateVoice方法如下:

/**
* 设置音量的大小
*
* @param progress
*/
private void updateVoice(int progress, boolean isMute) {
if (isMute) {
am.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
seekbarVoice.setProgress(0);
} else {
am.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
seekbarVoice.setProgress(progress);
currentVoice = progress;
}
}
setBrightness方法如下:

/*
*
* 设置屏幕亮度 lp = 0 全暗 ,lp= -1,根据系统设置, lp = 1; 最亮
*/
public void setBrightness(float brightness) {
WindowManager.LayoutParams lp = getWindow().getAttributes();

lp.screenBrightness = lp.screenBrightness + brightness / 255.0f;
if (lp.screenBrightness > 1) {
lp.screenBrightness = 1;
} else if (lp.screenBrightness < 0.1) {
lp.screenBrightness = (float) 0.1;
}
getWindow().setAttributes(lp);
}

但是这样的话并不能再屏幕上显示实时的调节效果,如果要显示实时的调节的效果(显示当前的亮度和音量)只要在对应的xml代码中增加一个textView即可,调节音量或者亮度的时候就将对应的值显示出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐