文档章节

二维码一

lsy999
 lsy999
发布于 2017/07/12 11:54
字数 355
阅读 1
收藏 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
博文 96
码字总数 26024
作品 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
使用PHP生成二维码的二种方法(带logo图像)

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

mysoftsky
2014/07/14
0
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

没有更多内容

加载失败,请刷新页面

加载更多

JS数组去重的几种常见方法

一、简单的去重方法 // 最简单数组去重法/** 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中* IE8以下不支持数组的indexOf方法* */function uniq(array){ var ...

Jack088
3分钟前
0
0
kafka 集群监控

一、监控kafka工具有很多,但是对于运维人员来说kafka Manager 就可以了 二、下载kafkaManager 编译安装 地址https://github.com/yahoo/kafka-manager 三、下下来的是源码 需要在开始安装官方...

雁南飞丶
4分钟前
0
0
php开发环境搭建

一、wamp环境搭建 安装apache 安装mysql 解压php 在httpd.conf中配置apache,让apache支持php #加载php作为apache的一个模块 LoadModule php5_module "d:/server/php/php5apache2_4.dll" 5. ......

lujc
7分钟前
0
0
java+testng接口测试

最近写了三个接口,很不想写了,觉得好麻烦呀,用postman比这个简洁多了,为什么要写代码呀,为都要学习代码呀呀,我现在还没觉得手写代码比用工具工作上优势体现在哪里了~~知道的告诉我下...

EvanDev
15分钟前
0
0
反向代理(内网穿透)工具Ngrok安装

ngrok是一个反向代理工具,1.x版本源码开源;可以自己搭建一个服务来使用,将本地的web或tcp服务通过公共端口和外部建立一个安全通道,这样就可以通过外网直接访问本地对应的服务,在进行微信...

zerokb-小浪
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部