android camera 预览 数据流,camera,SurfaceView实时预览获取帧数据,在手机上总是闪退...
请教各位关于用camera类做一个关于预览SurfaceView,然后通过 public void onPreviewFrame(byte[] data, Camera camera)获取data转换为RGB值(只需要获取数据流不需要转化为图片)。在这个过程中我的代码总是在手机上有闪退的现象,我不太知道 public void surfaceCreated,public void surfaceChanged,public void surfaceDestroyed;具体是怎么用的。能麻烦您写个Demo吗?谢谢
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SurfaceView view = (SurfaceView) findViewById(R.id.surface_view);
view.getHolder().addCallback(this);
//view.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
uStart=(Button) findViewById(R.id.start);
uStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(camera!=null){
if(isPreview)
camera.stopPreview();
camera.release();
camera=null;
System.out.println("----结束-----");
}
}
});
}
public void surfaceCreated(SurfaceHolder holder) {
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
try{
camera = Camera.open();
camera.setPreviewDisplay(holder);
Parameters params = camera.getParameters();
params.setPreviewSize(300, 200);
camera.setDisplayOrientation(90);
camera.setParameters(params);
camera.startPreview() ;
camera.setPreviewCallback(this);
}catch(Exception e){
e.printStackTrace();
}
isPreview=true;
}
public void surfaceDestroyed(SurfaceHolder holder) {
if(camera != null) camera.release() ;
camera = null ;
}
public void onPreviewFrame(byte[] data, Camera camera) {
Log.i("jefry", "vedio data come ...");
System.out.println("--------运行---------");
}
}
/*int w=camera.getParameters().getPreviewSize().width;
int h=camera.getParameters().getPreviewSize().height;
save(w,h,data);
}
public int decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height)
{
final int frameSize = width * height;
for (int j = 0, yp = 0; j < height; j++) {
int uvp = frameSize + (j >> 1) * width, u = 0, v = 0;
for (int i = 0; i < width; i++, yp++) {
int y = (0xff & ((int) yuv420sp[yp])) - 16;
if (y < 0) y = 0;
if ((i & 1) == 0) {
v = (0xff & yuv420sp[uvp++]) - 128;
u = (0xff & yuv420sp[uvp++]) - 128;
}
int y1192 = 1192 * y;
int r = (y1192 + 1634 * v);
int g = (y1192 - 833 * v - 400 * u);
int b = (y1192 + 2066 * u);
if (r < 0) r = 0; else if (r > 262143) r = 262143;
if (g < 0) g = 0; else if (g > 262143) g = 262143;
if (b < 0) b = 0; else if (b > 262143) b = 262143;
rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff);
// for(int i=0;i
System.out.println("**********"+rgb[i]);
}
}
writeDataToSD(rgb);
return rgb[width];
}
public void save(int w,int h,byte[] data){
//预览编码为YUV420SP的视频流,需转换为RGB编码
int[] RGB=new int[w*h];
int[] RGBData = new int[w* h];
byte[] mYUVData = new byte[data.length];
System.arraycopy(data,0, mYUVData, 0,data.length);
//RGB[w]=decodeYUV420SP(RGBData,mYUVData,w,h);
for(int i=0;i
System.out.println(RGB[i]);
}
public void writeDataToSD(int[] data){
String dir=Environment.getExternalStorageDirectory().getParent()+"/"+"帧数据流"+"/";
myDir = new File(dir);
if(!myDir.exists()){
//mkdirs()可以创建多级目录
myDir.mkdirs();
}
file=new File(myDir.getAbsoluteFile(),"preview.txt");
if(!file.exists()){
try{
流的对象
RandomAccessFile raf = new RandomAccessFile(file, "rw");
//将文件记录指针移动到最后
raf.seek(file.length());
for(int i = 0;i
// 开始写入数据
raf.writeFloat(data[i]);
}
// 关闭流的使用
raf.close();
}catch(Exception ex){
Toast.makeText(MainActivity.this, "文件写入失败", 1000).show();
}
}
}
}
*/
android camera 预览 数据流,camera,SurfaceView实时预览获取帧数据,在手机上总是闪退...相关推荐
- h5+app Android上架华为应用市场被拒原因“拒绝获取手机权限后app会闪退“以及隐私政策问题
h5+app Android上架华为应用市场被拒原因"拒绝获取手机权限后app会闪退" 华为应用市场报错:拒绝获取手机权限后app会闪退,此问题解决方案如下: 在manifest. ...
- 【Android】高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法
[Android]高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法 来源: https://blog.csdn.net/weixin_39370093/article/deta ...
- Android Camera设置setPreviewCallback实现onPreviewFrame接口实时截取每一帧视频流数据
1 概述 通过Android Camera拍摄预览中设置setPreviewCallback实现onPreviewFrame接口,实时截取每一帧视频流数据 2 知识点 ① Android Camera ...
- Android CameraX的PreviewView Ar背景实景实时预览
经常在AR开发过程中有这种需求:需要实时预览实景视频,如下图所示. 代码实现思路使用Android CameraX的PreviewView来实现,下面试代码,仅包含视频预览部分: 一.activity ...
- php更新用户数据为空,php – Instagram实时更新标签 – 获取空数据,为什么?
Heloo, 我正在开发一个项目,我需要从Instagram获得某些标签的实时更新. 这是我创建订阅的代码 $client_id = 'MOJID'; $client_secret = 'MOJIDS ...
- 抓取android系统日志_记录一次定位app闪退故障
在测试android客户端兼容性时,发现app闪退,上海的小伙伴需要闪退时的系统日志:故把快生锈的adb知识拿出来show一把: 1.下载adb工具包(adb的全称为Android Debug Bri ...
- 海康威视摄像机Java SDK拉流(二)开启关闭实时预览
上一篇:海康威视Java SDK拉流(一)初始化SDK 本篇介绍海康威视摄像机通过SDK开启关闭实时预览接口 下篇介绍实时预览的回调函数及解码库 测试环境: 系统:Centos 7 SDK:设备网络S ...
- 用户收货地址h5页面_如何实现H5可视化编辑器的实时预览和真机扫码预览功能...
前言所见即所得的设计理念在WEB IDE领域里一直是备受瞩目的功能亮点, 也能极大的提高 web coder的编程体验和编程效率. 笔者接下来就将对H5可视化编辑器的实时预览和真机扫码预览功能做一次方 ...
- textedit实时显示位置_加什么地形就看什么等高线!等高线实时预览就是这么爽...
做规划.做设计.选场地.水文分析.玩户外,哪个都不离开等高线地图. 目前能找到的等高线地图(OpenCycleMap.Garmin矢量地图等)都不太好用:加载速度慢.渲染效果不太好.无法对地形进行渲染 ...
最新文章
- Michael Jordan:人工智能研究的目标变了,不再是构建单个智能
- 潘建伟团队又创世界纪录!实现500公里量级现场光纤量子通信
- 专业写博一天------ArrayList 线程安全
- Delphi的类与继承
- java 爬虫 保存cookies_写爬虫,免不了要研究JavaScript设置cookies的问题
- Go知识点:slice、map、func、struct、method、interface、channel、goroutine
- ConcurrentLinkedHashMap v 1.0.1发布
- 记录一次可能的order by注入
- 如何使用 Java AWT 创建一个简易计算器
- RecycleView的Item Decoration间隔样式
- STM32工作笔记005---STM32芯片解读
- Java7 一些新特性及脚本语言支持API--笔记
- 记录报错:java.lang.NullPointerException org.apache.jsp.test_jsp._jspInit(test_jsp.java:23)
- javascript oo实现
- 苹果好还是华为好_苹果手机好还是华为手机好?专业手机测评师给出答复!
- 清除Mac OS X文件系统的附加属性@
- python 赋值_关于 python 分片赋值
- 软件开发人月成本估算方法
- 论文的英文文献在哪找(除了知网)?
- 【车牌识别】基于模板匹配算法实现车牌识别matlab源码