关于android 指定视频播放某段时间
来源:互联网 发布:linux脚本如何运行 编辑:程序博客网 时间:2024/05/10 07:00
这几天在做一个蓝牙设备控制手机app里面的视频人体模型动,想的是用蓝牙传过来的数据然后去指定视频要播放哪一个时间点,于是就搜了一点关于怎么控制播放视频的某一时间端(的视频)当然这个方案可能最后不会用,但是这个知识点还是有必要记录的。
先看一下加载视频并控制的类的相关代码(代码可能有点乱)
package com.example.getbitmap;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.bluetooth.BluetoothDevice;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.graphics.drawable.Drawable;import android.media.MediaPlayer;import android.net.Uri;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.SeekBar;import android.widget.Toast;import android.widget.VideoView;import com.example.bluetoothUtil.BluetoothClientService;import com.example.bluetoothUtil.BluetoothTools;import com.example.bluetoothUtil.TransmitBean;/** * */public class ActionVideoStartActivity extends Activity {private ImageView changeState;//改变视频播放还是暂停状态切换private VideoView videoView;private View layout;private SeekBar skb_audio;//一个进度条,此处用不到private Timer mTimer;private TimerTask mTimerTask;private int CurrentPosition;// 当前播放时间private List<BluetoothDevice> deviceList = new ArrayList<BluetoothDevice>();HashMap<Object, Object> map = new HashMap<Object, Object>();//一个标记里面存放的是,该activity要加载的xml文件和要加载的视频public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 根据集合得到要加载的XML文件setContentView(((View) chooseXmlAndSourceFile().get("xmlName")));// 通过findViewById找到资源changeState = (ImageView) layout.findViewById(R.id.changeState);// 获取界面上VideoView组件videoView = (VideoView) layout.findViewById(R.id.ble_surfaceview);// 根据集合得到要加载的视频文件LoadingVideo(((Integer) chooseXmlAndSourceFile().get("SourceFile")),2777, 4000);// 增加播放音乐按钮的事件changeState.setOnClickListener(new ImageView.OnClickListener() {@Overridepublic void onClick(View arg0) {changeState();}});videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {// @Overridepublic void onCompletion(MediaPlayer arg0) {try {videoView.start();} catch (Exception e) {e.printStackTrace();}}});// videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {// @Override// public boolean onError(MediaPlayer arg0, int arg1, int arg2) {// try {//// videoView.start();// } catch (Exception e) {// e.printStackTrace();// }// return false;// }// });//开始搜索Intent startSearchIntent = new Intent(BluetoothTools.ACTION_START_DISCOVERY);sendBroadcast(startSearchIntent);}// 切换动画的状态private boolean isStart = false;public void changeState() {if (isStart) {isStart = false;Drawable play_green_button = ((Context) (ActionVideoStartActivity.this)).getResources().getDrawable(R.drawable.pause_green_button);changeState.setImageDrawable(play_green_button);// mGLSurfaceView.control(true);videoView.start();} else {isStart = true;Drawable pause_green_button = ((Context) (ActionVideoStartActivity.this)).getResources().getDrawable(R.drawable.play_green_button);changeState.setImageDrawable(pause_green_button);// mGLSurfaceView.control(false);videoView.pause();}}// ----------定时器记录播放进度---------///** 加载视频 参数是播放的视频文件,开始时间,结束时间 */public void LoadingVideo(int SourceFile, int startTime, final int endTime) {String uri = "android.resource://" + getPackageName() + "/"+ SourceFile;videoView.setVideoURI(Uri.parse(uri)); videoView.seekTo(startTime);// 视频一开始就调到要指定的时间点处(毫秒)videoView.start();// 然后开始播放// int CurrentPosition = videoView.getCurrentPosition();//得到当前播放的视频时间点// 声明一个时间计时器mTimer = new Timer();mTimerTask = new TimerTask() {@Overridepublic void run() {if (videoView.isPlaying()) {CurrentPosition = videoView.getCurrentPosition();//当视频播放的时间点和指定结束点相同时暂停视频if (CurrentPosition == endTime) {videoView.pause();}}}};/** * schedule的意思(时间表、进度表)参数的意思是() * 第一个参数"new MyTask(event.getServletContext())": 是 TimerTask 类,在包:import * java.util.TimerTask .使用者要继承该类,并实现 public void run() 方法,因为 TimerTask * 类实现了 Runnable 接口。 * * 第二个参数"0"的意思是:(0就表示无延迟) 当你调用该方法后,该方法必然会调用 TimerTask 类 TimerTask 类 中的 * run() 方法,这个参数就是这两者之间的差值,转换成汉语的意思就是说,用户调用 schedule() * 方法后,要等待这么长的时间才可以第一次执行 run() 方法。 * * 第三个参数"60*60*1000"的意思就是: (单位是毫秒60*60*1000为一小时) (单位是毫秒3*60*1000为三分钟) * 第一次调用之后,从第二次开始每隔多长的时间调用一次 run() 方法 * * * */mTimer.schedule(mTimerTask, 0, 10);//每10毫秒执行一次run方法}@Overrideprotected void onResume() {super.onResume();Drawable play_green_button = ((Context) (ActionVideoStartActivity.this)).getResources().getDrawable(R.drawable.play_green_button);changeState.setImageDrawable(play_green_button);isStart = true;}/** 根据跳转传来的值进行判断要加载的XML文件以及视频文件 */public HashMap<Object, Object> chooseXmlAndSourceFile() {//这个地方是前面那个activity传过来的一个值,自己可以去掉直接选择要调用哪个xml文件Intent intent = getIntent();String actionName = intent.getStringExtra("actionName");if (actionName.equals("cbct")) {// 床边垂腿LayoutInflater inflater = (LayoutInflater) ActionVideoStartActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE);layout = inflater.inflate(R.layout.activity_cbct, null);map.put("xmlName", layout);map.put("SourceFile", R.raw.cbct);}return map;}}
0 0
- 关于android 指定视频播放某段时间
- Android 播放视频并获取指定时间的帧画面
- Android 播放视频并获取指定时间的帧画面
- 关于标准android中视频播放器中的快进和快退的步长时间设置
- 关于标准android中视频播放器中的快进和快退的步长时间设置
- Android视频音乐播放SeekBar和播放时间同步
- 使用EmguCv播放指定视频
- 关于Web视频播放
- 关于视频播放器
- 关于视频播放
- 关于音视频播放
- 关于视频播放
- android 关于android视频播放器的开发
- 使用jwPlayer播放视频中的某一段
- 关于android视频播放开发中 播放视频只有声音没有图像的问题解决方案
- GPUimageMovie 播放视频时间纠正
- GPUimageMovie 播放视频时间纠正
- 读指定时间的视频
- IO流实例代码练习
- adfqwer asdfasdf
- 【小话设计模式】行为型之解释器模式
- adsfqwe sdfasd
- NYON28大数阶乘
- 关于android 指定视频播放某段时间
- CCIE RS LAB V5 Verification - Multicast
- bootstrap3控件页面不能缩放
- 数据插入到MySQL数据库乱码的问题解决
- 声明与定义
- Java异常处理终结篇——如何进行Java异常处理设计
- android如何调用显示和隐藏系统默认的输入法
- c++学习main函数输入参数argc argv,vs2008输入参数设置,cmd常用命令
- 预测和分解时间序列数据(小时)Forecast and STL hourly time series data