Android之视频播放以及亮度音量变换
2016-09-26 22:57
651 查看
程序实现功能:
播放视频,右侧上下滑动改变亮度,左侧上下滑动改变音量。
现在我们来记住几句重要的属性
清单文件,强制横屏
android:screenOrientation=”landscape”
不会重新执行Oncreat
android:configChanges=”orientation|keyboard”
android:configChanges=”orientation|keyboard|screenSize
它会走onConfigurationChanged
VideoView中:android:foregroundGravity=”center”
下面是代码啦
下面是布局:
播放视频,右侧上下滑动改变亮度,左侧上下滑动改变音量。
现在我们来记住几句重要的属性
清单文件,强制横屏
android:screenOrientation=”landscape”
不会重新执行Oncreat
android:configChanges=”orientation|keyboard”
android:configChanges=”orientation|keyboard|screenSize
它会走onConfigurationChanged
VideoView中:android:foregroundGravity=”center”
下面是代码啦
public class VideoActivity extends Activity { private VideoView vv; private int k; //手势 private GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_video); vv = (VideoView) findViewById(R.id.vv); MediaController mediaController=new MediaController(this); vv.setMediaController(mediaController); mediaController.setMediaPlayer(vv); Intent intent =getIntent(); String url=intent.getStringExtra("playurl"); vv.setVideoPath(url); vv.requestFocus(); vv.start(); //返回上一页 vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { finish(); } }); //据说并不好用,需要和onTouchEvent配合使用 setGestureDetector(); } //触摸(触摸事件) @Override public boolean onTouchEvent(MotionEvent event) { // //手指抬起 // if(event.getAction()==MotionEvent.ACTION_UP){ // Log.d("==g==","up"); // } // //手指按下 // if(event.getAction() == MotionEvent.ACTION_DOWN){ // Log.d("==g==","down"); // Log.d("==g==", "down" + event.getX()); // Log.d("==g==", "down" + event.getY()); // // } // //手指移动 // if(event.getAction() == MotionEvent.ACTION_MOVE){ // Log.d("==g==","move"); // } //类的监听,完成解析 return gestureDetector.onTouchEvent(event); } //手势方法 public void setGestureDetector(){ gestureDetector =new GestureDetector( new GestureDetector.OnGestureListener() { @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } //滚动MotionEvent e1 1.手势起点事件 // MotionEvent e2 2.手势终点 //distanceX 3.x轴方向上移动的速度/每秒 // distanceY 4.Y轴方向上移动的速度/每秒 @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(e1.getY()-e2.getY()>0.5&&Math.abs(distanceY)>0.5){ if(e1.getX()>500){ setLightness(30); } else{ setAudio(1); } } if(e1.getY()-e2.getY()<0.5&&Math.abs(distanceY)>0.5){ Log.d("==g==", e1.getY() + ""); if(e1.getX()>500){ setLightness(-30); }else{ setAudio(-1); } } return true; } @Override public void onLongPress(MotionEvent e) { } //抛的动作 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } } ); } //物理键按下 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return super.onKeyDown(keyCode, event); } //物理键抬起 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return super.onKeyUp(keyCode, event); } //轨迹球 @Override public boolean onTrackballEvent(MotionEvent event) { return super.onTrackballEvent(event); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.d("==d==", ""+newConfig.orientation); } //改变屏幕亮度 public void setLightness(float lightness){ WindowManager.LayoutParams layoutParams =getWindow().getAttributes(); //屏幕的亮度,最大是255 layoutParams.screenBrightness =layoutParams.screenBrightness+lightness/255f; if(layoutParams.screenBrightness>1){ layoutParams.screenBrightness=1; }else if(layoutParams.screenBrightness<0.2){ layoutParams.screenBrightness=0.2f; } getWindow().setAttributes(layoutParams); } //加减音量 public void setAudio(int volume){ AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE); //当前音量 k = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); //最大音量 int max =audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); Log.d("==d==", "" + max); Log.d("==d==", "" + k); k=k+volume; if(k>=0&&k<=max){ audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,k,AudioManager.FLAG_PLAY_SOUND); }else { return; } //audioManager.adjustVolume(i+volume,AudioManager.FLAG_PLAY_SOUND); } }
下面是布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.edu.jereh.musicapp.VideoActivity" android:gravity="center" android:background="#000"> <VideoView android:id="@+id/vv" android:foregroundGravity="center" android:keepScreenOn="true" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> 视频截图
相关文章推荐
- 【Android】Android实现视频播放的时候滑动屏幕调节亮度和音量
- Android之通过VideoView控件播放一个视频出现的问题以及我的解决办法
- android WebView实现播放网络视频以及全屏显示
- Android播放网页视频以及帧动画
- Android中的Window、WindowManager以及悬浮框视频播放的实现
- Android中VideoView播放视频不能充满屏幕以及视频上的view与视频不同步显示的问题
- Android Webview完美支持播放各种视频。(解决无法播放优酷视频的问题以及周末无法播放优酷视频的问题)
- Android中视频播放以及解码
- Android--使用VideoView播放视频以及VideoView的api
- 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- vlc for android 2016 8月版本 在播放vlc视频时候进入以及退出卡顿1分钟的问题
- android之通过SurfaceView以及SurfaceHolder进行视频播放
- Android webview 播放视频无法播放以及可以播放预览图为加载不出来
- cocos2d-x 播放视频(mp4)后 android手机音量按钮失效
- [置顶] 【Android】Android开发实现进度条效果,SeekBar的简单使用。音量,音乐播放进度,视频播放进度等
- 视频框架 Vitamio 使用教程+部分心得 (四) 滑动控制声音和亮度+android 4.4.X 以上时全屏播放
- Android-视频播放实例之手势控制音乐、亮度
- Android MediaRecorder H264 编码实时视频流不能播放(readInt()值太大)以及如何将流实时上传到服务器的方法
- android MediaPlayer 视频开发+SurfaceHolder(可网络本地,以及加上倒计时和网络下载到本地流畅播放)
- android音量控制以及硬件同步