滑动调节音量与屏幕亮度
来源:互联网 发布:霸王别姬 段小楼 知乎 编辑:程序博客网 时间:2024/05/22 13:23
public class VideoViewDemo extends Activity { private String path = Environment.getExternalStorageDirectory() + "/Moon.mp4"; private VideoView mVideoView; private View mVolumeBrightnessLayout; private ImageView mOperationBg; private ImageView mOperationPercent; private AudioManager mAudioManager; /** 最大声音 */ private int mMaxVolume; /** 当前声音 */ private int mVolume = -1; /** 当前亮度 */ private float mBrightness = -1f; /** 当前缩放模式 */ private int mLayout = VideoView.VIDEO_LAYOUT_ZOOM; private GestureDetector mGestureDetector; private MediaController mMediaController; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.videoview); mVideoView = (VideoView) findViewById(R.id.surface_view); mVolumeBrightnessLayout = findViewById(R.id.operation_volume_brightness); mOperationBg = (ImageView) findViewById(R.id.operation_bg); mOperationPercent = (ImageView) findViewById(R.id.operation_percent); mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); mMaxVolume = mAudioManager .getStreamMaxVolume(AudioManager.STREAM_MUSIC); mVideoView.setVideoPath(path); mMediaController = new MediaController(this); mVideoView.setMediaController(mMediaController); mVideoView.requestFocus(); mGestureDetector = new GestureDetector(this, new MyGestureListener()); } @Override public boolean onTouchEvent(MotionEvent event) { if (mGestureDetector.onTouchEvent(event)) return true; // 处理手势结束 switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_UP: endGesture(); break; } return super.onTouchEvent(event); } /** 手势结束 */ private void endGesture() { mVolume = -1; mBrightness = -1f; // 隐藏 mDismissHandler.removeMessages(0); mDismissHandler.sendEmptyMessageDelayed(0, 500); } private class MyGestureListener extends SimpleOnGestureListener { /** 双击 */ @Override public boolean onDoubleTap(MotionEvent e) { if (mLayout == VideoView.VIDEO_LAYOUT_ZOOM) mLayout = VideoView.VIDEO_LAYOUT_ORIGIN; else mLayout++; if (mVideoView != null) mVideoView.setVideoLayout(mLayout, 0); return true; } /** 滑动 */ @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { float mOldX = e1.getX(), mOldY = e1.getY(); int y = (int) e2.getRawY(); Display disp = getWindowManager().getDefaultDisplay(); int windowWidth = disp.getWidth(); int windowHeight = disp.getHeight(); if (mOldX > windowWidth * 4.0 / 5)// 右边滑动 onVolumeSlide((mOldY - y) / windowHeight); else if (mOldX < windowWidth / 5.0)// 左边滑动 onBrightnessSlide((mOldY - y) / windowHeight); return super.onScroll(e1, e2, distanceX, distanceY); } } /** 定时隐藏 */ private Handler mDismissHandler = new Handler() { @Override public void handleMessage(Message msg) { mVolumeBrightnessLayout.setVisibility(View.GONE); } }; /** * 滑动改变声音大小 * * @param percent */ private void onVolumeSlide(float percent) { if (mVolume == -1) { mVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); if (mVolume < 0) mVolume = 0; // 显示 mOperationBg.setImageResource(R.drawable.video_volumn_bg); mVolumeBrightnessLayout.setVisibility(View.VISIBLE); } int index = (int) (percent * mMaxVolume) + mVolume; if (index > mMaxVolume) index = mMaxVolume; else if (index < 0) index = 0; // 变更声音 mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, index, 0); // 变更进度条 ViewGroup.LayoutParams lp = mOperationPercent.getLayoutParams(); lp.width = findViewById(R.id.operation_full).getLayoutParams().width * index / mMaxVolume;
//mTvPercent.setText((int)(index*1.0/mMaxVolume*100)+"%"); //显示当前声音的百分比 mOperationPercent.setLayoutParams(lp); } /** * 滑动改变亮度 * * @param percent */ private void onBrightnessSlide(float percent) { if (mBrightness < 0) { mBrightness = getWindow().getAttributes().screenBrightness; if (mBrightness <= 0.00f) mBrightness = 0.50f; if (mBrightness < 0.01f) mBrightness = 0.01f; // 显示 mOperationBg.setImageResource(R.drawable.video_brightness_bg); mVolumeBrightnessLayout.setVisibility(View.VISIBLE); } WindowManager.LayoutParams lpa = getWindow().getAttributes(); lpa.screenBrightness = mBrightness + percent; if (lpa.screenBrightness > 1.0f) lpa.screenBrightness = 1.0f; else if (lpa.screenBrightness < 0.01f) lpa.screenBrightness = 0.01f; getWindow().setAttributes(lpa); ViewGroup.LayoutParams lp = mOperationPercent.getLayoutParams(); lp.width = (int) (findViewById(R.id.operation_full).getLayoutParams().width * lpa.screenBrightness);
//mTvPercent.setText((int)(mBrightness*100)+"%");//显示当前亮度的百分比 mOperationPercent.setLayoutParams(lp); } @Override public void onConfigurationChanged(Configuration newConfig) { if (mVideoView != null) mVideoView.setVideoLayout(mLayout, 0); super.onConfigurationChanged(newConfig); }
0 0
- 滑动调节音量与屏幕亮度
- 音量及屏幕亮度调节
- 【Android】系统音量及屏幕亮度调节
- 【Android】Android实现视频播放的时候滑动屏幕调节亮度和音量
- 上下滑动可以调节屏幕亮度
- Fedora 下调节外放音量和屏幕亮度
- Android实现手机音量及屏幕亮度调节
- 安卓SeekBar调节系统亮度与音量
- 使用SurfaceView播放视频,调节进度,滑动屏幕调节音量并显示音量。
- 使用SurfaceView播放视频,调节进度,滑动屏幕调节音量并显示音量。
- C# 调节屏幕亮度
- Android 屏幕亮度调节
- android调节屏幕亮度
- C# 调节屏幕亮度 .
- centos 屏幕亮度 调节
- Android屏幕亮度调节
- android调节屏幕亮度
- Fedora17调节屏幕亮度
- Light OJ 1422 - Halloween Costumes (区间DP)
- WebSocket握手协议
- 常见PHP套件整理
- JS中函数声明和函数表达式的区别
- lpc1768的网络通讯
- 滑动调节音量与屏幕亮度
- android tvheadend compile
- AMScrollingNavbar
- 对oracle监听做trace
- openfire 插件开发学习笔记
- 连载:面向对象葵花宝典:思想、技巧与实践(10) - “抽象” 详解
- SQL 判断整数小数 , 小数去掉最后的0 ,判断小数精确位数
- 阿里云虚拟服务器Linux(CentOS)的初试
- Servlet生命周期与工作原理