求onpreviewframe用法() 重载函数和YuvImage类的用法和意义

(C)2012 本站提供的内容来源于广大网络用户,我们不保证内容的正确性。如果转载了您的内容,希望删除的请联系我们!当前访客身份:游客 [
这个人很懒,啥也没写
:还自己折腾了半天,学习了
:这个自定义的Title会随着内容向上滑动,不完美。...
:我的Eclipse里properties-&android-&add的时候,...
:不错,谢谢分享。
:好东西。。。。学习了。。。
:AllowWriteStreamBuffering这个属性很可怕哦。如...
:引用来自“andever”的评论 引用来自“叼烟斗的猫...
:引用来自“叼烟斗的猫”的评论 请问您,有没有a...
:请问您,有没有android camera视频通信的源码?我...
今日访问:5
昨日访问:19
本周访问:210
本月访问:917
所有访问:52294
android camera 通过onPreviewFrame采集视频
发表于4年前( 18:29)&&
阅读(10703)&|&评论()
0人收藏此文章,
package com.example.
import java.io.F
import java.io.FileOutputS
import java.io.IOE
import java.text.SimpleDateF
import java.util.D
import android.app.A
import android.graphics.R
import android.graphics.YuvI
import android.hardware.C
import android.hardware.Camera.S
import android.os.B
import android.os.E
import android.view.SurfaceH
import android.view.SurfaceV
public class MainActivity extends Activity implements SurfaceHolder.Callback,
Camera.PreviewCallback {
private SurfaceView mSurfaceview = // SurfaceView对象:(视图组件)视频显示
private SurfaceHolder mSurfaceHolder = // SurfaceHolder对象:(抽象接口)SurfaceView支持类
private Camera mCamera = // Camera对象,相机预览
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSurfaceview = (SurfaceView) findViewById(R.id.surfaceview);
mSurfaceHolder = mSurfaceview.getHolder(); // 绑定SurfaceView,取得SurfaceHolder对象
mSurfaceHolder.addCallback(this); // SurfaceHolder加入回调接口
// mSurfaceHolder.setFixedSize(176, 144); // 预览大小設置
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 設置顯示器類型,setType必须设置
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
if (mCamera == null) {
mCamera.stopPreview();
mCamera.setPreviewCallback(this);
mCamera.startPreview();
protected void onResume() {
super.onResume();
mCamera = Camera.open();
protected void onPause() {
super.onPause();
if (mCamera != null) {
mCamera.release();
public void surfaceCreated(SurfaceHolder holder) {
if (mCamera != null) {
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
} catch (IOException e) {
e.printStackTrace();
public void surfaceDestroyed(SurfaceHolder holder) {
public void onPreviewFrame(byte[] data, Camera camera) {
// 刚刚拍照的文件名
String fileName = "IMG_"
+ new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date())
.toString() + ".jpg";
File sdRoot = Environment.getExternalStorageDirectory();
String dir = "/Camera/";
File mkDir = new File(sdRoot, dir);
if (!mkDir.exists())
mkDir.mkdirs();
File pictureFile = new File(sdRoot, dir + fileName);
if (!pictureFile.exists()) {
pictureFile.createNewFile();
Camera.Parameters parameters = camera.getParameters();
Size size = parameters.getPreviewSize();
YuvImage image = new YuvImage(data,
parameters.getPreviewFormat(), size.width, size.height,
FileOutputStream filecon = new FileOutputStream(pictureFile);
pressToJpeg(
new Rect(0, 0, image.getWidth(), image.getHeight()),
90, filecon);
} catch (IOException e) {
e.printStackTrace();
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读Camera的回调函数onPreviewFrame
[问题点数:40分,结帖人inquisitive_plus]
Camera的回调函数onPreviewFrame
[问题点数:40分,结帖人inquisitive_plus]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年2月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第三2015年1月 移动开发大版内专家分月排行榜第三
2015年2月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第三2015年1月 移动开发大版内专家分月排行榜第三
2015年2月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第三2015年1月 移动开发大版内专家分月排行榜第三
2015年2月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第三2015年1月 移动开发大版内专家分月排行榜第三
2015年2月 移动开发大版内专家分月排行榜第二
2015年4月 移动开发大版内专家分月排行榜第三2015年1月 移动开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Android用摄像头的那点破事_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Android用摄像头的那点破事
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
你可能喜欢&&&计算机与互联网
&&&Android多媒体开发高级编程
&&&使用Camera类(12)
使用Camera类(12)
除了Camera.PictureCallback之外,还有其他一些值得提及的回调方法。
●&Camera.PreviewCallback:定义了onPreviewFrame(byte[]&data,&Camera&camera)&方法,当存在预览帧(preview&frame)时调用该方法。可以传入保存当前图像像素的字节数组。在Camera对象上,有3种不同的方式使用这个回调:
·&setPreviewCallback(Camera.PreviewCallback):使用此方法注册一个Camera.&PreviewCallback,这将确保在屏幕上显示一个新的预览帧时调用onPreviewFrame方法。传递到onPreviewFrame方法中的数据字节数组最有可能采用YUV格式。但是,Android&2.2是第一个包含了YUV格式解码器(YuvImage)的版本;在以前的版本中,必须手动完成解码。
·&setOneShotPreviewCallback(Camera.PreviewCallback):利用Camera对象上的这个方法注册Camera.PreviewCallback,从而当下一幅预览图像可用时调用一次onPreviewFrame。同样,传递到onPreviewFrame方法的预览图像数据最有可能采用YUV格式。可以通过使用ImageFormat中的常量检查Camera.&getParameters().&getPreviewFormat()返回的结果来确定这一点。
·&setPreviewCallbackWithBuffer(Camera.PreviewCallback):在Android&2.2中引入了该方法,其与setPreviewCallback的工作方式相同,但要求指定一个字节数组作为缓冲区,用于预览图像数据。这是为了能够更好地管理处理预览图像时使用的内存。
●&Camera.AutoFocusCallback:定义了onAutoFocus方法,当完成一个自动聚焦活动时调用它。通过传入此回调接口的一个实例,在调用Camera对象上的autoFocus方法时会触发自动聚焦。
●&Camera.ErrorCallback:定义了onError方法,当发生一个Camera错误时调用它。有两个常量可用于与传入的错误代码进行比较:CAMERA_ERROR_UNKNOWN和CAMERA_ERROR_SERVER_DIED。
●&Camera.OnZoomChangeListener:定义了onZoomChange方法,当正在进行或完成“平滑缩放”(慢慢缩小或放大)时调用它。在Android&2.2&(API&Level&8)中引入了这个类和方法。
Camera.ShutterCallback:定义了onShutter方法,当捕获图像时立刻调用它
让我们看一下完整的示例。下面编写的代码可在Android&2.2和更高版本上运行,但是只须稍做改动,这段代码应该就能够在Android&1.6和更高版本上运行。在注释中特别注明了要求高于1.6版本的部分。
多品类齐全,轻松购物
快多仓直发,极速配送
好正品行货,精致服务
省天天低价,畅选无忧

我要回帖

更多关于 onpreviewframe用法 的文章

 

随机推荐