• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 手机影音5--视频播放器的基本功能(2),5--基本功能

手机影音5--视频播放器的基本功能(2),5--基本功能

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了影音先锋视频播放器,暴风影音视频播放器,影音视频播放器,qq影音视频播放器,吉吉影音视频播放器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

手机影音5--视频播放器的基本功能(2),5--基本功能


1.设置电池状态

1_监听电量变化广播

private void initData() {
	utils = new Utils();
	//注册监听电量变化广播
	IntentFilter filter = new IntentFilter();
	filter.addAction(Intent.ACTION_BATTERY_CHANGED);//监听电量变化
	receiver = new MyBatterReceiver();
	registerReceiver(receiver, filter);
}

private class MyBatterReceiver extends BroadcastReceiver{

	@Override
	public void onReceive(Context context, Intent intent) {
	  //电量值,设置默认为0
	  level = intent.getIntExtra("level", 0);
     } }

2_电量刷新方法

/**
 * 设置电量的状态
*/
protected void setBatterStatus() {
	if(level <=0){
		iv_battery_status.setImageResource(R.drawable.ic_battery_0);
	}else if(level >0&& level <=10){
		iv_battery_status.setImageResource(R.drawable.ic_battery_10);
	}else if(level >10&&level <=20){
		iv_battery_status.setImageResource(R.drawable.ic_battery_20);
	}else if(level >20&&level <=40){
		iv_battery_status.setImageResource(R.drawable.ic_battery_40);
	}else if(level >40&&level <=60){
		iv_battery_status.setImageResource(R.drawable.ic_battery_60);
	}else if(level >60&&level <=80){
		iv_battery_status.setImageResource(R.drawable.ic_battery_80);
	}else if(level >80&&level <=100){
		iv_battery_status.setImageResource(R.drawable.ic_battery_100);
	}else{
		iv_battery_status.setImageResource(R.drawable.ic_battery_100);
	}
}

 

2.得到系统时间并且更新显示

1_得到系统时间

public String getSystemTime(){
	SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
	String systemTime = format.format(new Date());
	return systemTime;
}

2_在hanlder设置更新

//设置系统时间
tv_system_time.setText(utils.getSystemTime());

 

3.传递播放列表  

//传递列表数据-对象-序列化
Intent intent = new Intent(context,SystemVideoPlayer.class);
Bundle bundle = new Bundle();
bundle.putSerializable("videolist",mediaItems);
intent.putExtras(bundle);
intent.putExtra("position",position);
context.startActivity(intent);

序列化 

import java.io.Serializable;
/**
 * 作用:代表一个视频和音频
 */
public class MediaItem implements Serializable {
    ..............
}

 

4.监听播放完成和播放上一个视频  

1_设置监听播放完成

//当一个视频播放完成时候,将会回调这个方法
videoview.setOnCompletionListener(new OnCompletionListener() {
   
   @Override
   public void onCompletion(MediaPlayer mp) {
	  setPlayNext();
   }
});

 

/**
 * 播放下一个视频
 */
private void setPlayNext() {
	if (mediaItems != null && mediaItems.size() > 0) {
		//播放下一个
		position++;
		if (position < mediaItems.size()) {
			ll_loading.setVisibility(View.VISIBLE);
			MediaItem mediaItem = mediaItems.get(position);
			tvName.setText(mediaItem.getName());
			videoview.setVideoPath(mediaItem.getData());
			//设置按钮状态
			setButtonState();
		}
	} else if (uri != null) {
		//设置按钮状态-上一个和下一个按钮设置灰色并且不可以点击
		setButtonState();
	}
}

private void setButtonState() {
	if (mediaItems != null && mediaItems.size() > 0) {
		if (mediaItems.size() == 1) {
			setEnable(false);
		} else if (mediaItems.size() == 2) {
			if (position == 0) {
				btnVideoPre.setBackgroundResource(R.drawable.btn_pre_gray);
				btnVideoPre.setEnabled(false);
				btnVideoNext.setBackgroundResource(R.drawable.btn_video_next_selector);
				btnVideoNext.setEnabled(true);
			} else if (position == mediaItems.size() - 1) {
				btnVideoNext.setBackgroundResource(R.drawable.btn_next_gray);
				btnVideoNext.setEnabled(false);
				btnVideoPre.setBackgroundResource(R.drawable.btn_video_pre_selector);
				btnVideoPre.setEnabled(true);
			}
		} else {
			if (position == 0) {
				btnVideoPre.setBackgroundResource(R.drawable.btn_pre_gray);
				btnVideoPre.setEnabled(false);
			} else if (position == mediaItems.size() - 1) {
				btnVideoNext.setBackgroundResource(R.drawable.btn_next_gray);
				btnVideoNext.setEnabled(false);
			} else {
				setEnable(true);
			}
		}
	} else if (uri != null) {
		//两个按钮设置灰色
		setEnable(false);
	}
}

private void setEnable(boolean isEnable) {
	if (isEnable) {
		btnVideoPre.setBackgroundResource(R.drawable.btn_video_pre_selector);
		btnVideoPre.setEnabled(true);
		btnVideoNext.setBackgroundResource(R.drawable.btn_video_next_selector);
		btnVideoNext.setEnabled(true);
	} else {
		//两个按钮设置灰色
		btnVideoPre.setBackgroundResource(R.drawable.btn_pre_gray);
		btnVideoPre.setEnabled(false);
		btnVideoNext.setBackgroundResource(R.drawable.btn_next_gray);
		btnVideoNext.setEnabled(false);
	}
} 

2_点击下一个按钮

btn_next.setOnClickListener(mClickListener);

  

5.播放器控制面板控制面

1_手势识别器

//1.定义一个手势识别器
private GestureDetector detector;
  
//2.实例化手势识别器
detector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){

	@Override
	public void onLongPress(MotionEvent e) {
		super.onLongPress(e);
		setPlayOrPauseStatus();
		isPlaying = !isPlaying;
		//Toast.makeText(getApplicationContext(), "长按屏幕", 0).show();
	}

	@Override
	public boolean onDoubleTap(MotionEvent e) {
		Toast.makeText(getApplicationContext(), "双击屏幕", 0).show();
		return super.onDoubleTap(e);
	}

	@Override
	public boolean onSingleTapConfirmed(MotionEvent e) {
		//Toast.makeText(getApplicationContext(), "单击屏幕", 0).show();
		if(isShowControlPlayer){
			hideControlPlayer();
		}else{
			showControlPlayer();
			sendDelayedHideControlPlayerMessage();
		}
		return super.onSingleTapConfirmed(e);
		}
	});
}

//3.把点击事件传入手势识别器中
@Override
public boolean onTouchEvent(MotionEvent event) {
	detector.onTouchEvent(event);
	return super.onTouchEvent(event);
}

2_隐藏和显示控制面板方法

/**
* 显示控制面板
*/
protected void showControlPlayer() {
	fl_control_player.setVisibility(View.VISIBLE);
	isShowControlPlayer = true;
}

/**
* 隐藏控制面板
*/
protected void hideControlPlayer() {
	fl_control_player.setVisibility(View.GONE);
	isShowControlPlayer = false;
}

3_过段时间自动隐藏方法和移除消息

/**
* 发一个延迟600才隐藏控制面板的消息
*/
private void sendDelayedHideControlPlayerMessage() {
	handler.sendEmptyMessageDelayed(DELAYED_HIDECONTROL_MESSAGE, 6000);
}

/**
* 在消息队列中移除隐藏控制面板的消息
*/
private void removeDelayedHideControlPlayerMessage() {
	handler.removeMessages(DELAYED_HIDECONTROL_MESSAGE);
}

4_拖动视频的时候也要隐藏

video_seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
       
   //手指停止滑动的时候回调
   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
	  sendDelayedHideControlPlayerMessage();
   }
   //手指刚开始滑动的时候回调
   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
	  removeDelayedHideControlPlayerMessage();
   }
   //手指滑动状态发送变化的时候回调
   @Override
   public void onProgressChanged(SeekBar seekBar, int progress,
		boolean fromUser) {
	  if(fromUser){
             //seekBar.setProgress(progress);
	      videoview.seekTo(progress);
	  }  
   }
});

  

  

  

  

  

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手机影音8--视频播放器的高级功能(1),8--高级功能
  • 手机影音9--视频播放器的高级功能(2),9--高级功能
  • 手机影音7--视频播放器的基本功能(4),7--基本功能
  • 手机影音5--视频播放器的基本功能(2),5--基本功能
  • 手机影音6--视频播放器的基本功能(3),6--基本功能

相关文章

  • 2017-05-26硅谷社交3--登录页面,硅谷社交3--
  • 2018-11-27android studio开发控件布局
  • 2017-05-26android.view.WindowLeaked的解决办法,androidwindowleaked
  • 2017-05-26android内核剖析,android内核
  • 2017-05-26android.view.InflateException: Binary XML file line #34: Error inflating class,
  • 2017-05-26Android中TextView添加删除线,androidtextview
  • 2017-05-26零停重启程序工具Huptime研究
  • 2017-05-26安卓第十天笔记-fragment,安卓-fragment
  • 2017-05-26Android热补丁动态修复技术(三)—— 使用Javassist注入字节码,完成热补丁框架雏形(可使用)
  • 2017-05-221.2 开发环境搭建

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 用Kotlin实现Android定制视图(KAD 06),kotlinandroid
    • Android学习笔记-开关按钮ToggleButton和开关Switch,togglebuttonswitch
    • 安卓界面组件----列表视图,安卓组件----视图
    • android--获取屏幕高宽度工具类,android--工具类
    • Android新手入门2016(13)--阻塞对话框PopupWindow
    • 硅谷新闻8--TabLayout替换ViewPagerIndicator,tablayoutindicator
    • 有了malloc/free,为什么还要new/delete?
    • Android消息机制
    • Android 关于“NetworkOnMainThreadException”,networkonmainthread
    • compileDebugJavaWithJavac,compiledebugjava

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有