android原生视频格式,Android原生视频播放器

/**

* 更新时间

*@param textView

*@param millisecond

*/

private void updateTextViewWithTimeFormat(TextView textView,int millisecond){

int second=millisecond/1000;

int hh=second/3600;

int mm=second%3600/60;

int ss=second%60;

String str=null;

if(hh!=0){

str=String.format("%02d:%02d:%02d",hh,mm,ss);

}else{

str=String.format("%02d:%02d",mm,ss);

}

textView.setText(str);

}

/**

* 时时更新UI

*/

private Handler UIHandler=new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

if (msg.what == UPDATE_UI) {

//获取视频当前的播放时间

int currentPosition = videoView.getCurrentPosition();

//获取视频的总时间

int totalduration = videoView.getDuration();

//格式化视频播放时间

updateTextViewWithTimeFormat(current_text_tv, currentPosition);

updateTextViewWithTimeFormat(time_toatal_tv, totalduration);

play_seek.setMax(totalduration);

play_seek.setProgress(currentPosition);

UIHandler.sendEmptyMessageDelayed(UPDATE_UI, 500);

}

}

};

private void setPlayEvent(){

/**

* 控制视频的播放和暂停

*/

pause_img.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if(videoView.isPlaying()){

//更改图标

//暂停

videoView.pause();

}else{

//更改图标

//继续播放

videoView.start();

UIHandler.sendEmptyMessage(UPDATE_UI);

}

}

});

play_seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

updateTextViewWithTimeFormat(current_text_tv,progress);

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

UIHandler.removeMessages(UPDATE_UI);

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

int progress=seekBar.getProgress();

//令视频播放进度遵循seekbar停止拖动的这一刻的进度

videoView.seekTo(progress);

UIHandler.sendEmptyMessage(UPDATE_UI);

}

});

volumm_seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,progress,0);

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

UIHandler.removeMessages(UPDATE_UI);

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

});

/**

* 横竖屏切换

*/

screen_img.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if(isFullScreen){

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}else{

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

}

}

});

/**

* 控制VideoViewd的手势事件,左边控制亮度,右边音量增减

*/

videoView.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

float x=event.getX();

float y=event.getY();

float lastX=0,lastY=0;

switch (event.getAction()){

case MotionEvent.ACTION_DOWN:

lastX=x;

lastY=y;

break;

case MotionEvent.ACTION_MOVE:

float detalX=x-lastX;

float detalY=y-lastY;

float absdetalX=Math.abs(detalX);

float absdetalY=Math.abs(detalY);

if(absdetalX>threshold&&absdetalY>threshold){

if(absdetalX

isAdjust=true;

}else{

isAdjust=false;

}

}else if(absdetalXthreshold){

isAdjust=true;

}else if(absdetalX>threshold&&absdetalY

isAdjust=false;

}

if(isAdjust){

if(x

//调节亮度

if(detalY>0){

//降低亮度

}else{

//提高亮度

}

changeBrightness(-detalY);

}else{

if(detalY>0){

//减小声音

}else{

//增大声音

}

changeVolume(-detalY);

}

}

break;

case MotionEvent.ACTION_UP:

break;

}

return true;

}

});

}

//更改音量

private void changeVolume(float detalY){

int max=audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

int current=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

int index=(int)(detalY/screen_height*max*3);

int volume=Math.max(current+index,0);

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,volume,0);

volumm_seek.setProgress(volume);

}

//更改亮度

private void changeBrightness(float detalY){

WindowManager.LayoutParams attributes=getWindow().getAttributes();

brightness=attributes.screenBrightness;

float index=detalY/screen_height/3;

brightness+=index;

if(brightness>1.0f){

brightness=1.0f;

}

if(brightness<0.0f){

brightness=0.01f;

}

attributes.screenBrightness=brightness;

getWindow().setAttributes(attributes);

}

//监听到屏幕方向改变

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

//当屏幕方向为横屏的时候

if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){

setVideoViewScale(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);

volume_img.setVisibility(View.VISIBLE);

volumm_seek.setVisibility(View.VISIBLE);

isFullScreen=true;

//移除半屏状态

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

//设置全屏状态

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

}

//当屏幕方向为竖屏的时候

else{

setVideoViewScale(ViewGroup.LayoutParams.MATCH_PARENT,240);

volume_img.setVisibility(View.GONE);

volumm_seek.setVisibility(View.GONE);

isFullScreen=false;

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值