在采集视频的同时需要对视频进行实时处理,因此要使用到多线程。

AsyncTask是android提供的一个处理异步任务的框架,相当于Handler+Thread。相比而言,AsyncTask的优点是封装良好,代码简洁。

使用AsyncTask可以使你在后台执行耗时任务(doInBackground)并将结果反馈给UI线程(onPostExecute),方便UI线程更新界面,而不会阻塞UI线程。

参考链接:http://www.netfoucs.com/article/RowandJJ/69121.html

使用的代码:

   //2. 开启一个线程进行实施处理帧
/*自定义的IndentifyTask类,开启一个线程分析数据*/
private class IndentifyTask extends AsyncTask<Void, Void, Void>{ private byte[] mData;
//构造函数
IndentifyTask(byte[] data){
this.mData = data;
} @Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
//Size size = myCamera.getParameters().getPreviewSize(); //获取预览大小
final int w = myCamera.getParameters().getPreviewSize().width; //宽度
final int h = myCamera.getParameters().getPreviewSize().height;
final YuvImage image = new YuvImage(mData, ImageFormat.NV21, w, h, null);
ByteArrayOutputStream os = new ByteArrayOutputStream(mData.length);
if(!image.compressToJpeg(new Rect(0, 0, w, h), 100, os)){
return null;
}
byte[] tmp = os.toByteArray();
Bitmap bmp = BitmapFactory.decodeByteArray(tmp, 0,tmp.length);
//doSomethingNeeded(bmp); //自己定义的实时分析预览帧视频的算法
processBmp( bmp );//自己定义的实时分析预览帧视频的算法 return null;
}
}
//1.建立一个全局变量
IndentifyTask m_IndentifyTask ;

//3.在处理帧函数里面添加处理逻辑

@Override
public void onPreviewFrame(byte[] data, Camera arg1) {
if(starttime == 0) {
starttime = System.currentTimeMillis();
}
long time = System.currentTimeMillis()-starttime;
long current = time / 1000;
Log.d("video", "video recorder =========================remains "+current +" "+(time % 1000)); //在处理帧函数里面添加处理逻辑
switch(m_IndentifyTask.getStatus()){
case RUNNING:
return;
case PENDING:
m_IndentifyTask.cancel(false);
break;
}
m_IndentifyTask= new IndentifyTask(data);
m_IndentifyTask.execute((Void)null); }

最新文章

  1. “layout_”下划线开头的属性
  2. Android时间戳转换为标准Datetime(yyyy-MM-dd hh:mm:ss)格式
  3. python标准库 difflib-比较序列
  4. PAT 天梯赛 L2-004 这是二叉搜索树吗?
  5. 谈谈语音通信中的各种tone
  6. Github 入门(“趣考网络”学习第一步)
  7. php7.2连接Sqlserver2008 r2
  8. Python学习笔记,day4
  9. 关于hashMap中 计算hashCode的逻辑推理(二)
  10. day22-类的多态
  11. BZOJ.5068.友好的生物(思路)
  12. IEnumerable是集合,IEnumerator是集合的迭代器
  13. 在C中调用Matlab (转)
  14. arcgis求邻接矩阵
  15. 锐浪报表 导出 PDF ANSI码 乱码 问题解决
  16. 【ExtJS】FormPanel表单验证
  17. http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html
  18. Linux编程学习路线
  19. yum保留安装包方法,以及存放路径
  20. GCC &amp; Maker

热门文章

  1. 【[Offer收割]编程练习赛12 C】矩形分割
  2. Q - Period II
  3. 洛谷——P2347 砝码称重
  4. ubuntu下的代码格式化工具
  5. xtrabackup 2.3.3编译安装
  6. cocos2d-x 3.7 win7 32+Android 环境配置
  7. Git是什么?
  8. C语言相关
  9. 利用expect验证主机口令
  10. Rails5&#160;关联表格搜索