android camera 通过onPreviewFrame采集视频
来源:互联网 发布:网络电子商务图标 编辑:程序博客网 时间:2024/06/03 12:29
001
package
com.example.camera;
002
003
import
java.io.File;
004
import
java.io.FileOutputStream;
005
import
java.io.IOException;
006
import
java.text.SimpleDateFormat;
007
import
java.util.Date;
008
009
import
android.app.Activity;
010
import
android.graphics.Rect;
011
import
android.graphics.YuvImage;
012
import
android.hardware.Camera;
013
import
android.hardware.Camera.Size;
014
import
android.os.Bundle;
015
import
android.os.Environment;
016
import
android.view.SurfaceHolder;
017
import
android.view.SurfaceView;
018
019
public
class
MainActivity
extends
Activity
implements
SurfaceHolder.Callback,
020
Camera.PreviewCallback {
021
022
private
SurfaceView mSurfaceview =
null
;
// SurfaceView对象:(视图组件)视频显示
023
private
SurfaceHolder mSurfaceHolder =
null
;
// SurfaceHolder对象:(抽象接口)SurfaceView支持类
024
private
Camera mCamera =
null
;
// Camera对象,相机预览
025
026
@Override
027
public
void
onCreate(Bundle savedInstanceState) {
028
super
.onCreate(savedInstanceState);
029
setContentView(R.layout.main);
030
mSurfaceview = (SurfaceView) findViewById(R.id.surfaceview);
031
mSurfaceHolder = mSurfaceview.getHolder();
// 绑定SurfaceView,取得SurfaceHolder对象
032
mSurfaceHolder.addCallback(
this
);
// SurfaceHolder加入回调接口
033
// mSurfaceHolder.setFixedSize(176, 144); // 预览大小設置
034
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// 設置顯示器類型,setType必须设置
035
}
036
037
@Override
038
public
void
surfaceChanged(SurfaceHolder holder,
int
format,
int
width,
039
int
height) {
040
if
(mCamera ==
null
) {
041
return
;
042
}
043
mCamera.stopPreview();
044
mCamera.setPreviewCallback(
this
);
045
mCamera.startPreview();
046
}
047
048
@Override
049
protected
void
onResume() {
050
super
.onResume();
051
mCamera = Camera.open();
052
}
053
054
@Override
055
protected
void
onPause() {
056
super
.onPause();
057
if
(mCamera !=
null
) {
058
mCamera.release();
059
mCamera =
null
;
060
}
061
}
062
063
@Override
064
public
void
surfaceCreated(SurfaceHolder holder) {
065
try
{
066
if
(mCamera !=
null
) {
067
mCamera.setPreviewDisplay(mSurfaceHolder);
068
mCamera.startPreview();
069
}
070
}
catch
(IOException e) {
071
e.printStackTrace();
072
}
073
074
}
075
076
@Override
077
public
void
surfaceDestroyed(SurfaceHolder holder) {
078
079
}
080
081
@Override
082
public
void
onPreviewFrame(
byte
[] data, Camera camera) {
083
084
// 刚刚拍照的文件名
085
String fileName =
"IMG_"
086
+
new
SimpleDateFormat(
"yyyyMMdd_HHmmss"
).format(
new
Date())
087
.toString() +
".jpg"
;
088
File sdRoot = Environment.getExternalStorageDirectory();
089
String dir =
"/Camera/"
;
090
File mkDir =
new
File(sdRoot, dir);
091
if
(!mkDir.exists())
092
mkDir.mkdirs();
093
File pictureFile =
new
File(sdRoot, dir + fileName);
094
if
(!pictureFile.exists()) {
095
try
{
096
pictureFile.createNewFile();
097
Camera.Parameters parameters = camera.getParameters();
098
Size size = parameters.getPreviewSize();
099
YuvImage image =
new
YuvImage(data,
100
parameters.getPreviewFormat(), size.width, size.height,
101
null
);
102
FileOutputStream filecon =
new
FileOutputStream(pictureFile);
103
image.compressToJpeg(
104
new
Rect(
0
,
0
, image.getWidth(), image.getHeight()),
105
90
, filecon);
106
}
catch
(IOException e) {
107
e.printStackTrace();
108
}
109
}
110
}
111
}
转自:http://my.oschina.net/eclipse88/blog/80115
参考:
http://www.cnblogs.com/mengyan/archive/2012/09/01/2666641.html
http://www.cnblogs.com/sight/archive/2012/04/17/2453671.html
http://www.cnblogs.com/ice4c/archive/2010/10/18/1854756.html
0 0
- android camera 通过onPreviewFrame采集视频
- android camera 通过onPreviewFrame采集视频
- Android Camera设置setPreviewCallback实现onPreviewFrame接口实时截取每一帧视频流数据
- Android Camera设置setPreviewCallback实现onPreviewFrame接口实时截取每一帧视频流数据
- Android camera onPreviewFrame 图片旋转问题
- Android 实时视频采集—Camera预览采集
- Android 实时视频采集—Camera预览采集
- 【流媒體】Android 实时视频采集—Camera预览采集
- Android音视频-视频采集(Camera预览)
- Camera中onPreviewFrame()方法的视频方向旋转
- android视频流花屏onPreviewFrame不受控制!!!!!!!!
- 《android多媒体api》之摄像头camera采集原始视频数据
- Android中直播视频技术探究之---摄像头Camera视频源数据采集解析
- Android中直播视频技术探究之---摄像头Camera视频源数据采集解析
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- Android 音视频开发(四):使用 Camera API 采集视频数据
- Android Camera系列开发 (二)通过Intent录制视频
- Android Camera系列开发 (二)通过Intent录制视频
- Android基础---接收来自其他应用程序的内容
- 高性能网络编程 之 TCP连接的内存使用
- poj1504
- python socket server端
- 黑马程序员--异常总结
- android camera 通过onPreviewFrame采集视频
- 利用Eclipse中的Maven构建Web项目报错(一)
- Photon + Unity3D 线上游戏开发 学习笔记(四)
- package.json version
- java 打开文件
- linux__Centos和Ubuntu有什么区别?
- Android基础--Activity启动模式详解
- C/c++获取运行代码的所需的时间
- zoj 2157