滑动调节音量与屏幕亮度

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); 
        }


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值