文档章节

二维码一

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
博文 85
码字总数 25183
作品 0
程序员
Google Chrome iOS 版更新,新增二维码扫描功能

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

凝小紫
2017/02/03
1K
3
使用PHP生成二维码的二种方法(带logo图像)

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

mysoftsky
2014/07/14
0
0
[开源]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

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部