• Android开发之初识Camera图像采集


    转自http://blog.csdn.net/redoffice/article/details/6716462

    下面记录一个简单的相机的制作方法。

    制作相机,首先需要添加照相的权限。添加方法是在AndroidManifest.xml文件中添加

    <uses-permission android:name=” android.permission.CAMERA”>即可。

    其次:修改布局文件:如下代码所示。

    [html] view plaincopy
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7.     <SurfaceView  
    8.     android:id = "@+id/mySurfaceView"  
    9.     android:layout_width="320px"  
    10.     android:layout_height="240px">  
    11.     </SurfaceView>  
    12.     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    13.     android:layout_width="fill_parent"  
    14.     android:layout_height="wrap_content"  
    15.     >  
    16. <Button  
    17.     android:id="@+id/myButton"    
    18.     android:layout_width="wrap_content"   
    19.     android:layout_height="wrap_content"   
    20.     android:text="打开"/>  
    21.  <Button  
    22.     android:id="@+id/myButton2"    
    23.     android:layout_width="wrap_content"   
    24.     android:layout_height="wrap_content"   
    25.     android:text="关闭"/>   
    26. </LinearLayout>  
    27. </LinearLayout>  

    再次,编辑代码,如下所示:

    [java] view plaincopy
    1. /* 
    2.  *  Android开发之camera图像采集 
    3.  *  MyTestCamera.java 
    4.  *  Created on: 2011-8-24 
    5.  *  Author: blueeagle 
    6.  *  Email: liujiaxiang@gmail.com 
    7.  */  
    8.   
    9. package com.blueeagle;  
    10.   
    11. import java.io.IOException;  
    12.   
    13. import android.app.Activity;  
    14. import android.hardware.Camera;  
    15. import android.os.Bundle;  
    16. import android.view.SurfaceHolder;  
    17. import android.view.SurfaceView;  
    18. import android.view.View;  
    19. import android.widget.Button;  
    20.   
    21. public class MyTestCamera extends Activity implements SurfaceHolder.Callback{  
    22.     Camera myCamera;  
    23.     SurfaceView mySurfaceView;  
    24.     SurfaceHolder mySurfaceHolder;  
    25.     Button myButton1;  
    26.     Button myButton2;  
    27.     boolean isPreview = false;  
    28.   
    29.     @Override  
    30.     public void onCreate(Bundle savedInstanceState) {  
    31.         super.onCreate(savedInstanceState);  
    32.         setContentView(R.layout.main);  
    33.           
    34.         mySurfaceView = (SurfaceView)findViewById(R.id.mySurfaceView);  
    35.         myButton1 = (Button)findViewById(R.id.myButton);  
    36.         myButton2 = (Button)findViewById(R.id.myButton2);  
    37.           
    38.         mySurfaceHolder = mySurfaceView.getHolder();  
    39.         mySurfaceHolder.addCallback(this);  
    40.         mySurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
    41.         myButton1.setOnClickListener(new Button.OnClickListener(){  
    42.   
    43.             @Override  
    44.             public void onClick(View v) {  
    45.                 initCamera();  
    46.             }  
    47.         });          
    48.         myButton2.setOnClickListener(new Button.OnClickListener(){  
    49.   
    50.             @Override  
    51.             public void onClick(View v) {  
    52.                 if(myCamera!=null&&isPreview){  
    53.                     myCamera.stopPreview();  
    54.                     myCamera.release();  
    55.                     myCamera = null;  
    56.                     isPreview = false;  
    57.                 }  
    58.             }  
    59.               
    60.         });  
    61.     }  
    62.     public void initCamera() {  
    63.         // TODO Auto-generated method stub  
    64.         if(!isPreview){  
    65.             myCamera = Camera.open();  
    66.         }  
    67.         if(myCamera !=null && !isPreview){  
    68.             try{  
    69.                 myCamera.setPreviewDisplay(mySurfaceHolder);  
    70.                 myCamera.startPreview();  
    71.             }  
    72.             catch(IOException e){  
    73.                 e.printStackTrace();  
    74.             }  
    75.             isPreview = true;  
    76.         }  
    77.     }  
    78.     @Override  
    79.     public void surfaceChanged(SurfaceHolder holder, int format, int width,  
    80.             int height) {  
    81.         // TODO Auto-generated method stub  
    82.     }  
    83.     @Override  
    84.     public void surfaceCreated(SurfaceHolder holder) {  
    85.         // TODO Auto-generated method stub  
    86.     }  
    87.     @Override  
    88.     public void surfaceDestroyed(SurfaceHolder holder) {  
    89.         // TODO Auto-generated method stub  
    90.     }  
    91. }  


     

            如果在模拟器中运行,可以得到如图所示的情形。如果在真机上运行,则会打开摄像头,将实际的影响显现出来。关闭时,则定在关闭时的画面。这样基本可以完成了图像的采集。如果程序中对相机有要求的话,可以采用这种方式进行。


  • 相关阅读:
    cookie和session。
    K3cloud Web API对接---单据保存接口(有源单)
    K3 wise kis 防火墙设置
    新单序时簿插件
    mssqlserver中排序规则冲突的问题解决
    读取金蝶图片
    金蝶wise委外订单关闭简述
    存储过程加锁
    判断存储过程是否存在
    解除死锁
  • 原文地址:https://www.cnblogs.com/walccott/p/4957582.html
Copyright © 2020-2023  润新知