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

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”

下面是代码啦

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>

视频截图


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐