位置: 编程技术 - 正文

Android 摄像头(Android 摄像头预览卡顿)

编辑:rootadmin
Android开发中如何调用摄像头的功能 (-- ::)转载▼标签: android 摄像头 surface callback picture 拍照 杂谈分类: 3GAndroid学习笔记我们要调用摄像头的拍照功能,显然第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码 <uses-permission android:name="android.permission.CAMERA"/>//摄像头权限 SD卡读写权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>第二步,要将摄像头捕获的图像实时地显示在手机上。我们是用SurfaceView这个视图组件来实现的,因此在main.xml中加入下列代码<SurfaceView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@&#;id/surfaceview" />第三步,设置窗口的显示方式 首先获得当前窗口 Window window = getWindow();//得到窗口 接着设置没有标题 requestWindowFeature(Window.FEATURE_NO_TITLE);//没有标题 接着设置全屏 window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏 当然,我们在拍照过程中,屏幕必须一致处于高亮状态,因此接着加入下面代码 window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//设置高亮至此,我们将窗口的显示方式规定死了,然后才能设置窗口上显示的组件(顺序非常重要) setContentView(R.layout.main);第四步,设置SurficeView显示控件的属性 找到surficeView surfaceView = (SurfaceView) findViewById(R.id.surfaceview); 设置它的像素为x surfaceView.getHolder().setFixedSize(, ); //下面设置surfaceView不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前 surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);第五步,就是为surficeView加入回调方法(callBack)surfaceView.getHolder().addCallback(new SurfaceCallback());上面的回调类是我们自己定义的,代码如下private class SurfaceCallback implements SurfaceHolder.Callback{@Overridepublic void surfaceCreated(SurfaceHolder holder) {try {camera = Camera.open();//打开硬件摄像头,这里导包得时候一定要注意是android.hardware.CameraWindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);//得到窗口管理器Display display = wm.getDefaultDisplay();//得到当前屏幕Camera.Parameters parameters = camera.getParameters();//得到摄像头的参数parameters.setPreviewSize(display.getWidth(), display.getHeight());//设置预览照片的大小parameters.setPreviewFrameRate(3);//设置每秒3帧parameters.setPictureFormat(PixelFormat.JPEG);//设置照片的&#;式parameters.setJpegQuality();//设置照片的质量parameters.setPictureSize(display.getHeight(), display.getWidth());//设置照片的大小,默认是和 屏幕一样大camera.setParameters(parameters);camera.setPreviewDisplay(surfaceView.getHolder());//通过SurfaceView显示取景画面camera.startPreview();//开始预览isPreview = true;//设置是否预览参数为真} catch (IOException e) {Log.e(TAG, e.toString());}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stub} @Overridepublic void surfaceDestroyed(SurfaceHolder holder) {if(camera!=null){if(isPreview){//如果正在预览 camera.stopPreview();camera.release();}}} }第六步,我们必须对按键事件进行监听,如是拍照还是聚焦,代码如下public boolean onKeyDown(int keyCode, KeyEvent event) {//处理按键事件if(camera!=null&&event.getRepeatCount()==0)//代表只按了一下{switch(keyCode){case KeyEvent. camera.autoFocus(null);//自动对焦 break; case KeyEvent. camera.takePicture(null, null, new TakePictureCallback());//将拍到的照片给第三个对象中,这里的TakePictureCallback()是自己定义的,在下面的代码中 break;}}return true;//阻止事件往下传递,否则按搜索键会变成系统默认的}------------------------------------------------------------------------------------------private final class TakePictureCallback implements PictureCallback{public void onPictureTaken(byte[] data, Camera camera) {try {Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()&#;".jpg");FileOutputStream outputStream = new FileOutputStream(file);bitmap.compress(CompressFormat.JPEG, , outputStream);outputStream.close();camera.stopPreview();camera.startPreview();//处理完数据之后可以预览} catch (Exception e) {Log.e(TAG, e.toString());}}}注意,代码中有两个回调类,一个是SurfaceCallback(),另外一个是TakePictureCallback(),初学者可能一时难以理解,通俗地讲,前者是用来监视surficeView这个暂时存放图片数据的显示控件的,根据它的显示情况调用不同的方法,包括surfaceCreated(),surfaceChanged(),surfaceDestroyed(),也就不难理解为什么会有这三个回调方法了(注意,在surfaceDestroyed()方法中必须释放摄像头,详细代码参见上方)。TakePictureCallback()是为了监视是否拍照而设计的接口,期中也仅有一个方法,camera将拍照得到的数据传入方法,我们便可以对拍照得到的数据进行进一步处理了。至此,简单的拍照功能介绍完毕!源码已经托管在 geakit上面 欢迎下载

推荐整理分享Android 摄像头(Android 摄像头预览卡顿),希望有所帮助,仅作参考,欢迎阅读内容。

Android 摄像头(Android 摄像头预览卡顿)

文章相关热门搜索词:Android 摄像头 api 兼容 平台,android摄像头,android摄像头,Android 摄像头推流,Android 摄像头 api 兼容 平台,Android 摄像头推流,Android 摄像头采集监控,Android 摄像头采集监控,内容如对您有帮助,希望把文章链接给更多的朋友!

Android-自定义组件之自定义条形频谱 喜欢听音乐的朋友想必都知道,有很多音乐播放软件(如:千千静听),里面都会有一个能够伴随着音乐的节奏在不断变化的频谱。由于之前我也在开

普通本科生面试总结以及在校编程经历 为什么我的标题是《普通本科生面试总结以及在校编程经历》,因为我觉得我所代表的群体是不一样的。我既不是名牌大学毕业,也不是2本中佼佼者。

android中定时定位的实现 想要实现这个功能,应该分为三部分工作。(1)定时功能的实现,调用系统当前时间,使用timer实现定时功能;(2)当前位置的获取,使用GPS功能获取

标签: Android 摄像头预览卡顿

本文链接地址:https://www.jiuchutong.com/biancheng/374478.html 转载请保留说明!

上一篇:AndroidStudio资料集(androidstudiosdk)

下一篇:Android-自定义组件之自定义条形频谱(android自定义属性详解)

  • 合伙企业转让股权如何缴税
  • 个人工程款收入不纳税
  • 买一赠一的税务处理
  • 以前年度损益调整
  • 金税盘地区编号查询
  • 合并报表盈余公积等于母公司盈余公积
  • 发票已经做账但要退款账不平咋办
  • 简易征收增值税怎么做账
  • 个人所得税差额20%政策
  • 保险公司代收车船税在发票备注栏
  • 工厂筹建期间购房合法吗
  • 可供出售权益工具投资公允价值的增加
  • 怎么扣除未支付的钱
  • 实际费用比预算高
  • 出售全资子公司合并报表怎么做
  • 报销发票只准报一部分怎么做账?
  • 自制发票和增值税发票的区别是什么?
  • 增值税抵扣凭证包括桥闸通行费发票
  • 关联方转移定价注意问题
  • 原始凭证谁负责
  • 企业汇算清缴前的票可以入账吗
  • 公司注销货币资金有余额要交税吗
  • 工资薪金个税税率表
  • 专票红冲分录
  • 化妆品的消费税率多少
  • 员工可以一起辞职吗
  • 苹果系统中英文切换快捷键
  • 华为手机定位另外一个华为手机怎么办
  • 注册表被恶意锁定怎么恢复正常
  • 重命名电脑名称有什么用
  • 企业在弥补亏损和提取法定盈余公积前一般不得分配利润
  • 罚款应该计入营业所吗
  • 怎么关闭win10搜索栏
  • 企业向银行贷款要交印花税吗
  • 弗拉维亚王朝
  • 知乎百万大v
  • 制造业利润占比多少合适
  • 企业会计准则存在的问题怎么写
  • [error] Error: Fail to open IDE 问题解决
  • 新政府会计制度科目解读
  • wordpress最新版本
  • python怎么将整数转化为字符串
  • 增值税专用发票和普通发票的区别
  • 母公司和子公司可以一起投标吗
  • 工会收取的工会经费应缴纳增值税
  • 预收账款未发货会计分录
  • 临时工工资账务处理该怎么进行
  • 政府补助的相关法律法规
  • mysql优化常用的几种方法
  • 产权出典是啥意思
  • 进项税抵扣的分录怎么做
  • 会计中管理费用和制造费用的区别
  • 以房抵债会计分录怎么做
  • 事业单位财政直拔工资误填为劳务费怎么写情况说明
  • 企业要怎样才能用到便宜的天然气
  • 销售自产农产品的农民是增值税纳税人吗
  • 过了认证期怎么办
  • 税后净利润弥补亏损分lu1
  • 出售设备账务处理
  • 差旅费包括哪些费用
  • 建筑服务红字发票需要填写备注吗
  • 进项税额抵扣好还是不抵扣好
  • Win7 SP1补丁32/64位 2015年1月汇总篇(内附下载)
  • rtc resume
  • win10电脑cmd命令大全
  • android开发环境的搭建步骤
  • 批处理实例
  • hbase shell split
  • vue js 页面代码分离
  • vue拦截器使用场景
  • angular ngshow
  • Intermediate Unity 3D for iOS: Part 3/3
  • javascript中hasOwnProperty() 方法使用指南
  • 广西税务12366如何交社保
  • 信息报送条例
  • 湖州市2020年最低生活保障
  • 新三步走和旧三步走的异同点
  • 税务发票机器怎么操作
  • 遂宁市国家税务局
  • 商标转让需要原件吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设