文档章节

二维码一

lsy999
 lsy999
发布于 2017/07/12 11:54
字数 355
阅读 1
收藏 0
点赞 0
评论 0

简单实现二维码 在导入Camera遇到一个问题 就是应该导入import android.hardware.Camera;

  1. import java.io.ByteArrayOutputStream;  

  2. import java.io.IOException;  

  3. import java.util.Timer;  

  4. import java.util.TimerTask;  

  5.   

  6. import android.app.Activity;  

  7. import android.content.Context;  

  8. import android.graphics.Bitmap;  

  9. import android.graphics.BitmapFactory;  

  10. import android.graphics.ImageFormat;  

  11. import android.graphics.Rect;  

  12. import android.graphics.YuvImage;  

  13. import android.hardware.Camera;  

  14. import android.os.Bundle;  

  15. import android.util.Log;  

  16. import android.view.Display;  

  17. import android.view.SurfaceHolder;  

  18. import android.view.SurfaceView;  

  19. import android.view.WindowManager;  

  20. import android.widget.ImageView;  

  21.   

  22. public class CameraTestActivity extends Activity implements SurfaceHolder.Callback {  

  23.     private static String TAG = CameraTestActivity.class.getSimpleName();  

  24.     private SurfaceHolder surfaceHolder;  

  25.     private Camera camera;  

  26.     private ImageView imageView;  

  27.     private Timer mTimer;  

  28.     private TimerTask mTimerTask;  

  29.   

  30.     private Camera.AutoFocusCallback mAutoFocusCallBack;  

  31.     private Camera.PreviewCallback previewCallback;  

  32.   

  33.     /** Called when the activity is first created. */  

  34.     @Override  

  35.     public void onCreate(Bundle savedInstanceState) {  

  36.         super.onCreate(savedInstanceState);  

  37.         setContentView(R.layout.main);  

  38.         SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);  

  39.         imageView = (ImageView) findViewById(R.id.image_view);  

  40.         surfaceHolder = surfaceView.getHolder();  

  41.         surfaceHolder.addCallback(this);  

  42.         surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  

  43.         mAutoFocusCallBack = new Camera.AutoFocusCallback() {  

  44.             @Override  

  45.             public void onAutoFocus(boolean success, Camera camera) {  

  46.                 if (success) {  

  47.                     // isAutoFocus = true;  

  48.                     camera.setOneShotPreviewCallback(previewCallback);  

  49.                     Log.d(TAG, "onAutoFocus success");  

  50.                 }  

  51.             }  

  52.         };  

  53.   

  54.         previewCallback = new Camera.PreviewCallback() {  

  55.             @Override  

  56.             public void onPreviewFrame(byte[] data, Camera arg1) {  

  57.                 if (data != null)  

  58.                 {  

  59.                     Camera.Parameters parameters = camera.getParameters();  

  60.                     int imageFormat = parameters.getPreviewFormat();  

  61.                     Log.i("map", "Image Format: " + imageFormat);  

  62.   

  63.                     Log.i("CameraPreviewCallback", "data length:" + data.length);  

  64.                     if (imageFormat == ImageFormat.NV21)  

  65.                     {  

  66.                         // get full picture  

  67.                         Bitmap image = null;  

  68.                         int w = parameters.getPreviewSize().width;  

  69.                         int h = parameters.getPreviewSize().height;  

  70.                             

  71.                         Rect rect = new Rect(0, 0, w, h);   

  72.                         YuvImage img = new YuvImage(data, ImageFormat.NV21, w, h, null);  

  73.                         ByteArrayOutputStream baos = new ByteArrayOutputStream();  

  74.                         if (img.compressToJpeg(rect, 100, baos))   

  75.                         {   

  76.                             image =  BitmapFactory.decodeByteArray(baos.toByteArray(), 0, baos.size());  

  77.                             imageView.setImageBitmap(image);  

  78.                         }  

  79.                   

  80.                     }  

  81.                 }  

  82.             }  

  83.         };  

  84.   

  85.         mTimer = new Timer();  

  86.         mTimerTask = new CameraTimerTask();  

  87.         mTimer.schedule(mTimerTask, 0, 500);  

  88.     }  

  89.   

  90.     @Override  

  91.     public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {  

  92.         // TODO Auto-generated method stub  

  93.     }  

  94.   

  95.     @Override  

  96.     public void surfaceCreated(SurfaceHolder arg0) {  

  97.         // TODO Auto-generated method stub  

  98.         initCamera();  

  99.     }  

  100.   

  101.     @Override  

  102.     public void surfaceDestroyed(SurfaceHolder arg0) {  

  103.         // TODO Auto-generated method stub  

  104.         if (camera != null) {  

  105.             camera.stopPreview();  

  106.             camera.release();  

  107.             camera = null;  

  108.         }  

  109.         previewCallback = null;  

  110.         mAutoFocusCallBack = null;  

  111.     }  

  112.   

  113.     public void initCamera() {  

  114.         camera = Camera.open();  

  115.         Camera.Parameters parameters = camera.getParameters();  

  116.         WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); // 获取当前屏幕管理器对象  

  117.         Display display = wm.getDefaultDisplay(); // 获取屏幕信息的描述类  

  118.         parameters.setPreviewSize(display.getWidth(), display.getHeight());  

  119.         camera.setParameters(parameters);  

  120.         try {  

  121.             camera.setPreviewDisplay(surfaceHolder);  

  122.         } catch (IOException e) {  

  123.             System.out.println(e.getMessage());  

  124.         }  

  125.         camera.startPreview();  

  126.     }  

  127.   

  128.     class CameraTimerTask extends TimerTask {  

  129.         @Override  

  130.         public void run() {  

  131.             if (camera != null) {  

  132.                 camera.autoFocus(mAutoFocusCallBack);  

  133.             }  

  134.         }  

  135.     }  

© 著作权归作者所有

共有 人打赏支持
lsy999
粉丝 0
博文 78
码字总数 24322
作品 0
程序员
使用PHP生成二维码的二种方法(带logo图像)

分享下如何使用PHP生成二维码,以及如何生成中间带LOGO图像的二维码 一、利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: 二、使用P...

mysoftsky
2014/07/14
0
0
Google Chrome iOS 版更新,新增二维码扫描功能

iPhone用户不再需要下载一个第三方软件来扫描二维码了,因为谷歌Chrome浏览器iOS应用的最新更新中添加了二维码扫描(QR scanner)功能。你可以在谷歌浏览器的菜单栏中找到扫描二维码功能,也...

凝小紫
2017/02/03
1K
3
[开源]C#二维码生成解析工具,可添加自定义Logo

  二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,...

雲霏霏
2015/03/04
0
0
微信小程序实战教程1503---生成二维码

在微信小程序中,如果我们可以自己将指定内容生成二维码,出示给别人,将是一个比较有用的功能。但是微信小程序API中,目前暂时还没有这个功能,但是我们可以通过变通的方法,来实现这一功能...

yt7589
2017/03/06
0
0
生成图片二维码工具--visual-qr-code

visual-qr-code 可以创建出精美的二维码,与传统的二维码不同的是,设置的背景图片或logo并不是只是在二维码中心,背景图片和logo都是半透明的,让二维码更好看 一、使用示例(详细情况源码中...

boat824109722
01/04
625
0
Android二维码扫描开发(一):实现思路与原理

Android二维码扫描开发(一):实现思路与原理 Android二维码扫描开发(二):YUV图像格式详解 Android二维码扫描开发(三):zxing库的使用及图像亮度信息提取 现在二维码已经非常普及了,那...

微笑的江豚
2016/08/24
105
0
Laravel -- 实战篇 自制二维码 Simple QrCode

一、配置 1.在项目根目录输入命令 composer require simplesoftwareio/simple-qrcode 1.3.* 2.在 的 数组里添加服务提供者. SimpleSoftwareIOQrCodeQrCodeServiceProvider::class 3.在 的 数......

QIANG008
2016/09/27
0
0
zxing生成解析二维码以及二维码生成解析的一个Android应用程序

二维码技术不是什么新技术了,但是这几天工作用到,然后才现学习现使用,使用的是Google的ZXing,使用起来很简单, 我练习的两种方式,一种的简单的javase工程,一种是Android客户端生成解析...

Mysoft
2015/11/13
0
0
boat824109722/visual-qr-code

visual-qr-code 该应用的功能是创建可以设置背景图片或者logo的二维码 一、使用示例(详细情况源码中的测试用例) 示例1: 测试代码 @Testpublic void testPOSITIONRECTANGLE() { e.printStac...

boat824109722
01/04
0
0
visual-qr-code 1.0 发布,可设置 Logo 的二维码生成

visual-qr-code可以创建出精美的二维码,与传统的二维码不同的是,设置的背景图片或logo并不是只是在二维码中心,背景图片和logo都是半透明的,让二维码更好看 一、使用示例(详细情况源码中的...

boat824109722
01/08
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 为方便需要,所有的shell脚本放到 /usr/local/sbin/ 目录下 切换到 /usr/local/sbin/ 目录下,创建告警系统脚本 #!/bin/bash#Written by aming.# 是否发送邮件的开关(1表...

Zhouliang6
6分钟前
1
0
不要再问我跨域的问题了

原文链接:web.jobbole.com 【RTC实时互联网大会 限时免费 马上报名】www.bagevent.com 写下这篇文章后我想,要不以后就把这种基础的常见知识都归到这个“不要再问我XX的问题”,形成一系列内...

阿K1225
8分钟前
0
0
Tomcat配置虚拟路径

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="/data/dispute_https/headPortrait/" path="/headPortrait" reloadable="true"/> <!-- 该文件名为headPortrait.xml,放在${tomca......

Helios51
9分钟前
0
0
开源PaaS Rainbond 3.6.1 Released

本次3.6.1版本更新,重点修复了3.6.0版本部分情况下会出现的BUG,同时改进了内部市场、参数验证、历史消息等功能,详细更新记录如下—— 3.6.1 功能改进 云帮初次使用跳转至注册页面 消息添加...

好雨云帮
10分钟前
0
0
Unsupported major.minor version 52.0

执行代码的jdk版本 低于 编译的jdk版本 其中52.0 对应的就是 jdk1.8版本。

@林文龙
10分钟前
0
0
聊聊spring cloud的AbstractLoadBalancingClient

序 本文主要研究一下spring cloud的AbstractLoadBalancingClient AbstractLoadBalancingClient spring-cloud-netflix-ribbon-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/netfli......

go4it
11分钟前
0
0
博客改版通知

先上博客地址 --> http://metaphors.name 最近将博客从 Jekyll 迁到了 Hexo,所以简书、开源中国、博客园、CSDN文章中的的部分图片丢了,原文链接也不可用了,不过没关系,原文链接都会转到博...

Metaphors
12分钟前
0
0
vue基础知识练习

一、Hello World <div id="itany">{{msg}} <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 --> </div><script src="js/vue.js"></script><script>var vm=new Vue({......

一个yuanbeth
15分钟前
0
0
spring @Transactional注解参数详解

原文:事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需...

binhu
18分钟前
0
0
CORS 跨域实践

本文首发于个人微信公众号《andyqian》,期待你的关注~ 前言 系统通常都是由单体应用逐渐演化而来,演化成为前后端分离的分布式应用。在享受分布式系统带来的诸多好处之时,随之而来的也有不...

andyqian
25分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部