zoukankan      html  css  js  c++  java
  • Android开发之初识Camera图像采集

    /*
    
    * Android开发之初识camera图像采集
    
    * 北京Android俱乐部群:167839253
    
    * Created on: 2011-8-24
    
    * Author: blueeagle
    
    * Email: liujiaxiang@gmail.com
    
    */
    
    下面记录一个简单的相机的制作方法。
    
    制作相机,首先需要添加照相的权限。添加方法是在AndroidManifest.xml文件中添加
    
    <uses-permission android:name=” android.permission.CAMERA”>即可。
    
    其次:修改布局文件:如下代码所示。
    
    <textarea readonly name="code" class="html"><?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        > 
        <SurfaceView 
        android:id = "@+id/mySurfaceView" 
        android:layout_width="320px" 
        android:layout_height="240px"> 
        </SurfaceView> 
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        > 
    <Button 
    android:id="@+id/myButton"  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="打开"/> 
    <Button 
    android:id="@+id/myButton2"  
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="关闭"/> 
    </LinearLayout> 
    </LinearLayout> 
    </textarea>再次,编辑代码,如下所示:
    
    <textarea readonly name="code" class="java">/* 
    *  Android开发之camera图像采集 
    *  MyTestCamera.java 
    *  Created on: 2011-8-24 
    *  Author: blueeagle 
    *  Email: liujiaxiang@gmail.com 
    */ 
    
    package com.blueeagle; 
    
    import java.io.IOException; 
    
    import android.app.Activity; 
    import android.hardware.Camera; 
    import android.os.Bundle; 
    import android.view.SurfaceHolder; 
    import android.view.SurfaceView; 
    import android.view.View; 
    import android.widget.Button; 
    
    public class MyTestCamera extends Activity implements SurfaceHolder.Callback{ 
        Camera myCamera; 
        SurfaceView mySurfaceView; 
        SurfaceHolder mySurfaceHolder; 
        Button myButton1; 
        Button myButton2; 
        boolean isPreview = false; 
    
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.main); 
            
            mySurfaceView = (SurfaceView)findViewById(R.id.mySurfaceView); 
            myButton1 = (Button)findViewById(R.id.myButton); 
            myButton2 = (Button)findViewById(R.id.myButton2); 
            
            mySurfaceHolder = mySurfaceView.getHolder(); 
            mySurfaceHolder.addCallback(this); 
            mySurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
            myButton1.setOnClickListener(new Button.OnClickListener(){ 
    
    @Override 
    public void onClick(View v) { 
    initCamera(); 
    } 
            });        
            myButton2.setOnClickListener(new Button.OnClickListener(){ 
    
    @Override 
    public void onClick(View v) { 
    if(myCamera!=null&amp;&amp;isPreview){ 
    myCamera.stopPreview(); 
    myCamera.release(); 
    myCamera = null; 
    isPreview = false; 
    } 
    } 
            
            }); 
        } 
    public void initCamera() { 
    // TODO Auto-generated method stub 
    if(!isPreview){ 
    myCamera = Camera.open(); 
    } 
    if(myCamera !=null &amp;&amp; !isPreview){ 
    try{ 
    myCamera.setPreviewDisplay(mySurfaceHolder); 
    myCamera.startPreview(); 
    } 
    catch(IOException e){ 
    e.printStackTrace(); 
    } 
    isPreview = true; 
    } 
    } 
    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, 
    int height) { 
    // TODO Auto-generated method stub 
    } 
    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 
    } 
    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
    // TODO Auto-generated method stub 
    } 
    } 
    </textarea><br>
    
    如果在模拟器中运行,可以得到如图所示的情形。如果在真机上运行,则会打开摄像头,将实际的影响显现出来。关闭时,则定在关闭时的画面。这样基本可以完成了图像的采集。如果程序中对相机有要求的话,可以采用这种方式进行。
    
    <img src="http://hi.csdn.net/attachment/201108/24/0_1314193114Jhd0.gif" alt="">
    
    这个例子只是一个小demo。供深入学习参考用。
    
    <br>

    好文章 :假如你喜欢一位码农小帅哥

  • 相关阅读:
    百度搜索技巧
    Redis汇总
    分享一个经验,代码打开mysql链接,执行存储过程时,提示:Table 'mysql.proc' doesn't exist
    WPF 重写微调自带的样式,ListView、DataGrid、TreeView等所有控件的默认样式
    WPF 图片抗锯齿,尤其是小图片更为严重
    通过鼠标事件,从鼠标点击的坐标寻找指定的控件
    重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下
    重写TreeView,自定义图标,生成通行的下划线,取消默认获得焦点失去焦点的效果,并支持拖拽节点到外界
    四、C#入门—表达式与运算符
    三、C#入门—数据类型
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3945307.html
Copyright © 2011-2022 走看看