滑动调节音量与屏幕亮度

来源:互联网 发布:霸王别姬 段小楼 知乎 编辑:程序博客网 时间: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