/*

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

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

Android开发之初识Camera图像采集的更多相关文章

  1. CSharp程序员学Android开发---1.初识AndriodIDE,掌握工具使用

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  2. Android开发学习之Camera

    今天本来想写一篇关于百度地图定位SDK的文章的,无奈根据官网提供的例子编写的程序始终无法运行,所以这个计划只能落空.那么今天要与大家分享的是Camera,即照相机.随着硬件能力的大幅提升,手机上各种依 ...

  3. Android开发之初识MVP模式

    各位亲爱的小伙伴,有没有想我啊,我胡汉wing又回来了. 很长一段时间没有更新博客..原因是..从离职回到学校以后,一直在享受最后的学生时光(打游戏).. 游戏固然很爽,但是觉得实在很荒废,于是半夜诈 ...

  4. CSharp程序员学Android开发---3.Android内部元素不填充BUG

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  5. CSharp程序员学Android开发---2.个人总结的快捷键

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  6. Android 开发 Camera类的拍照与录像

    前言 在开发Android应用的时候,如果需要调用摄像头拍照或者录像,除了通过Intent调用系统现有相机应用进行拍照录像之外,还可以通过直接调用Camera硬件去去获取摄像头进行拍照录像的操作.本篇 ...

  7. 初识Android && 搭建Android开发环境

    搭建Android开发环境需要的工具: JDK(Java Development Kit) Eclipse Android Sdk(Software Development Kit) ADT (And ...

  8. 【转】Android开发学习笔记(一)——初识Android

    对于一名程序员来说,“自顶向下”虽然是一种最普通不过的分析问题和解决问题的方式,但其却是简单且较为有效的一种.所以,将其应用到Android的学习中来,不至于将自己的冲动演变为一种盲目和不知所措. 根 ...

  9. 【Mood-12】Android开发相关书籍推荐

    新年伊始,找到Android进阶干货若干,2015拜读. 1.Android应用UI设计模式 目前,谷歌Android操作系统在移动市场中风头正劲,并且未来发展势不可挡.<Android应用UI ...

随机推荐

  1. 嵌入式 hi3518c下ramdisk文件系统与文件系统烧写以及uboot中change-the-env

    NULL RAM : mkdir ramdisk_test  临时挂在点 dd if=/dev/zero of=123 bs=1k count=10000 建立空硬盘 losetup /dev/loo ...

  2. SQL Server 2012安装时如何不安装自带的Visual Studio

    不安装以下两个:

  3. 转载:看c++ primer 学习心得

    学习C++ Primer时遇到的问题及解释 chenm91 感觉: l          啰嗦有时会掩盖主题:这本书确实有些啰嗦,比如在讲函数重载的时候,讲了太长一大段(有两节是打了*号的,看还是不看 ...

  4. 数组乘积--满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出

    数组乘积(15分) 输入:一个长度为n的整数数组input 输出:一个长度为n的整数数组result,满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出). ...

  5. 【剑指offer 面试题12】打印1到最大的n位数

    思路: 用n位字符数组表示n位数,通过递归的方式逐层(位)遍历,递归终止时打印. #include "stdio.h" #include "string.h" ...

  6. C 实现的算法篇

    算法的定义:算法是解决实际问题的一种精确的描述方法,目前,广泛认同的定义是:算法的模型分析的一组可行的确定的和有穷的规则 算法的五个特性:有穷性,确切性,输入,输出,可行性.目前算法的可执行的步骤非常 ...

  7. iOS多线程之GCD小记

    iOS多线程之GCD小记 iOS多线程方案简介 从各种资料中了解到,iOS中目前有4套多线程的方案,分别是下列4中: 1.Pthreads 这是一套可以在很多操作系统上通用的多线程API,是基于C语言 ...

  8. linux 下的进程管理工具 supervisor

    在linux下监控进程: 1)yum install python-setuptools   linux下的python安装工具 2)easy_install supervisor     安装sup ...

  9. 关于ORACLE的硬解析和软解析与MySQL的查询缓存query_cache探讨

    今天在项目中探讨到Oracle对于SQL语句的解析方法以及MySQL相应的处理方法: --------------------------------------------------------- ...

  10. 【转】Nginx系列(四)--工作原理

    原博文出于:    http://blog.csdn.net/liutengteng130/article/details/46724081  感谢! 上篇文章介绍了Nginx框架的设计之管理进程以及 ...