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

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); }

安卓多线程——AsyncTask的更多相关文章

  1. 安卓中AsyncTask的基本使用

    安卓中AsyncTask的基本使用 使用场景介绍 在安卓开发中,我们经常需要访问互联网资源,这些访问是都需要在后台线程中去完成的,因为安卓的UI线程不允许执行耗时任务.然而,后台线程是不可以修改安卓的 ...

  2. android多线程-AsyncTask之工作原理深入解析(下)

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  3. android多线程-AsyncTask之工作原理深入解析(上)

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  4. 转:关于安卓多线程while(true)方法占用CPU高的原因及其解决方法

    由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,CPU占用率暴涨.于是开始查找原因,发现是线程run()方法里的while(true)导致的, 下图是为解决时开启一条while( ...

  5. Android 多线程-----AsyncTask详解

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  6. Android 多线程----AsyncTask异步任务详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  7. Android多线程--AsyncTask

    常见的多线程方法有: 继承Thread类 实现Runnable接口 Handler AsyncTask HandlerThread 1.定义 一个Android已经封装好的轻量级异步类 属于抽象类,即 ...

  8. 【UE4 C++ 基础知识】<14> 多线程——AsyncTask

    概念 AsyncTask AsyncTask 系统是一套基于线程池的异步任务处理系统.每创建一个AsyncTas,都会被加入到线程池中进行执行 AsyncTask 泛指 FAsyncTask 和 FA ...

  9. android 多线程 AsyncTask 下载图片

    AsyncTask 下载图片 package com.test.network; import android.graphics.Bitmap; import android.graphics.Bit ...

随机推荐

  1. 实验十二 团队作业8:软件测试与Alpha冲刺 第三天

    项目 内容 这个作业属于哪个课程 老师链接 这个作业的要求在哪里 作业链接地址 团队名称 always run 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) ...

  2. 清北学堂模拟赛d1t5 拍照(photo)

    题目描述 假设这是一个二次元.LYK召集了n个小伙伴一起来拍照.他们分别有自己的身高Hi和宽度Wi.为了放下这个照片并且每个小伙伴都完整的露出来,必须需要一个宽度为ΣWi,长度为max{Hi}的相框. ...

  3. [Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]

    经典二分图匹配,可以用匈牙利算法,也可以用最大流 代码如下(Dinic): #include <iostream> #include <cstdio> #include < ...

  4. nyoj_85_有趣的数_201312122130

    有趣的数 时间限制:3000 ms  |           内存限制:65535 KB 难度:2   描述 把分数按下面的办法排成一个数表. 1/1 1/2 1/3 1/4..... 2/1 2/2 ...

  5. UVA 10905

    这题一开始比较错了.两字符串比较应该是 ab和ba两字符串连接起来比较,谁在前面大就排前面. #include <iostream> #include <cstdio> #in ...

  6. jQuery Validation让验证变得如此easy(三)

    下面代码进行对jQuery Validation的简单演示包含必填项.字符长度,格式验证 一.引入文件 <script src="js/jquery-1.8.0.min.js" ...

  7. jquery.validate.js插件的使用方法

    近期做项目.须要用到 jQuery.validate.js插件,于是记录一下工作中的一些经验,以便日后学习. [样例例如以下] 1.前台页面 <form id="form1" ...

  8. hdu1325 Is It A Tree?(二叉树的推断)

    Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  9. 请求文件下载URL过长处理

    /* * PostNewWin * Author:ppchen */var PostNewWin = function(url){    var urlArr = url.split("?& ...

  10. Uboot中支持lcd和hdmi显示不同的logo图片【转】

    本文转载自:http://blog.csdn.net/u010865783/article/details/54953315 在lcd为竖屏,hdmi显示横屏的情况下,如果按照默认的uboot显示框架 ...