`
yunlonglove
  • 浏览: 233147 次
社区版块
存档分类
最新评论

Android开发之初识Camera图像采集

 
阅读更多

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”>即可。

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

<?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>

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

/*
 *  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&&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 && !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
	}
}


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

这个例子只是一个小demo。供深入学习参考用。


分享到:
评论

相关推荐

    Android初识之Activity组件

    在Android应用开发中,Activity是核心组件之一,它充当了用户界面的主要载体,与用户进行交互。本篇文章将深入探讨Activity的基本概念、生命周期以及如何在Activity之间传递数据。 首先,让我们了解一下Activity类...

    android开发入门教程

    第1章 掀起你的盖头来——初识Android 1.1 认识Android 1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android我做主 1.3.1 开发基于Android平台的应用 1.3.2 参加Android开发者大赛 1.3.3 ...

    IoT-Camera学习笔记之初识IoT-Camera

    IoT-Camera学习笔记之初识IoT-Camera

    探索Android FrameWork底层开发视频全套

    2.Android开发环境搭建与编译 3.Android编译过程分析 4.android.mk初识 5.Android.mk学习1 6.Android.mk学习2 7.Android.mk学习3 8.Android启动课程大纲 9.Android启动模式 10.init启动分析 11.走入init启动脚本 12....

    名师讲坛:Android开发实战经典-程序代码

    全书共分为13章,包括认识Android、搭建Android开发环境、初识Activity、Android中的基本控件(上)、布局管理器、Android事件处理、Android中的基本控件(下)、数据存储、Android组件通信、多媒体技术、手机服务、...

    Android开发教程_013_初识Android Manifest 标清.flv

    Android开发教程_013_初识Android Manifest 标清

    Android开发艺术探索.任玉刚(带详细书签).pdf

    本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层...

    《Google Android开发入门与实战》

    第1章 掀起你的盖头来——初识Android 1.1 认识Android 1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android我做主 1.3.1 开发基于Android平台的应用 1.3.2 参加Android开发者大赛 1.3.3 ...

    Android开发\深入浅出Android.pdf

    - **环境搭建**:开发者需安装Android Studio,这是官方推荐的集成开发环境(IDE),提供了全面的开发工具和功能。 - **流程详解**: - 下载并安装Android Studio。 - 配置Android SDK路径,确保SDK Manager可用。...

    《Google Android开发入门与实战》.pdf

    1. 初识Android:书中介绍了Android的历史和发展,强调了它作为一个开放平台对于个人开发者的重要性,包括通过开发应用参与大赛、在Android Market发布应用以获取收益和认可。此外,还介绍了Android模拟器的使用,以...

    深入浅出Android——Android开发经典教材

    3. Android应用的开发流程:从建立新工程、初识GUI界面的设计开始,介绍视图(View)、XML文件的创建和编辑,以及如何通过视觉化的界面开发工具来获取和存取识别符号等。 4. 程序流程的解读与实践:通过对程序流程的...

    初识Android-开发环境图文详解PPT

    在Android开发中,构建一个有效的开发环境是至关重要的第一步。...熟练掌握这些基本概念和操作,将为你的Android开发之路打下坚实的基础。通过不断的实践和学习,你将能够创建出更加优秀和功能丰富的Android应用程序。

    Android开发教程_006_初识XML布局 标清.flv

    Android开发教程_006_初识XML布局 标清

    Android Dalvik虚拟机初识

    详细讲解了Android_Dalvik_虚拟机初始和架构方向,想了解Android dalvik虚拟机的值得一看。

    关于Android的开发报告

    #### 二、初识Android应用程序 Android应用开发主要采用Java语言。在Android应用程序中,有几个核心的概念非常关键: - **Activity**:类似于J2ME中的MIDlet,负责创建和管理用户界面窗口。一个运行中的Activity...

    [Android开发权威指南].李宁.扫描版.pdf

    第1章 初识庐山真面目 Android开发简介 第2章 工欲善其事 必先利其器 搭建和使用Android开发环境 第二部分 基础篇 第3章 千里之行始于足下 Android程序设计基础 第4章 我的UI我做主 用户界面开发基础 第5章 良好的...

Global site tag (gtag.js) - Google Analytics