Android 照相机.docx

上传人:b****1 文档编号:588305 上传时间:2023-04-29 格式:DOCX 页数:9 大小:16.94KB
下载 相关 举报
Android 照相机.docx_第1页
第1页 / 共9页
Android 照相机.docx_第2页
第2页 / 共9页
Android 照相机.docx_第3页
第3页 / 共9页
Android 照相机.docx_第4页
第4页 / 共9页
Android 照相机.docx_第5页
第5页 / 共9页
Android 照相机.docx_第6页
第6页 / 共9页
Android 照相机.docx_第7页
第7页 / 共9页
Android 照相机.docx_第8页
第8页 / 共9页
Android 照相机.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Android 照相机.docx

《Android 照相机.docx》由会员分享,可在线阅读,更多相关《Android 照相机.docx(9页珍藏版)》请在冰点文库上搜索。

Android 照相机.docx

Android照相机

Android照相机

一.Android照相机原理

Goolgle从AndroidOS2.0版本开始提供照相API功能,

可以开发控制照相功能;更在AndroidOS2.3版本支持多个相机功能,让相机应用程序可以选择和配置相机。

1.信息配置文件AndroidManifest.xml中添加权限和功能

name=”android.permission.CAMERA”/>

name=”android.hardware.camera”/>

name=”android.hardware.autofocus”/>

name=”android.hardware.flash”/>

Android照相机是横向显示的,因此照片的属性必须要配置成”landscape”。

label=”@string/app_name”android:

screenOrientation=”landscape”android:

name=”.MainActivity”>

2.相机应用程序拍摄的步骤

相机类提供图像的捕捉启动预览停止预览拍摄照片检索视频编码。

1)采用open()方法获得相机实例。

2)获取与getParameters()相关的配置项目

3)如果有必要的话,可以重新配置相机特性参数,修改返回的Camera.Parameters对象,并调用setParameters(Camera.Parameters).

4)如果要改回显示方向的话,则调用setDisplayOrentation(int)

5)传递完全初始化的SurfaceHoloer给setPreviewDisplay

(SurfaceHolder)。

如果没有一个表面景象surface的话,相机将无法启动预览。

6)调用startPreview()来开始更新预览表面景象surface。

在可以拍摄一张照片之前,就必须是已经可以开始预览。

7)当你决定要拍摄这一张照片时,调用takePicture(Camera.

ShutterCallbackshutter,Camera.PictureCallbackraw,Camera.

PictureCallbackpostview,Camera.PictureCallbackjpeg)。

捕获一张照片,然后等待处理的回调,取得实际图像数据。

8)拍摄一张照片后,预览显示就已经停止了。

需要拍摄更多张照片时,再次调用startPreview().

9)调用stopPreview()来停止更新预览表面景象surface

10)调用release()来释放相机,应用程序应立即在oPause()阶段释放相机,如果想要重新获取相机的实例,要做onResume()中调用reaOpen()方法。

二.设计一款照相机软件

1.相机所拍摄的影像的预览(Preview)

2.相机自动焦距和拍摄照片(AutoFoucus)

3.配置相机特性的参数(Parameters)

4.贴图在拍摄的影响上(Overlay)

代码:

部分

a)CameraManifest.xml文件

name="android.permission.CAMERA"/>

name="android.hardware.camera"/>

name="android.hardware.autofocus"/>

name="android.hardware.flash"/>

android:

icon="@drawable/ic_launcher"

android:

label="@string/app_name">

android:

name=".CameraActivity"

android:

label="@string/app_name"android:

screenOrientation="landscape">

name="android.intent.action.MAIN"/>

name="android.intent.category.LAUNCHER"/>

b)res/layout/main.xml文件

xmlversion="1.0"encoding="utf-8"?

>

android="

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

orientation="vertical">

android:

id="@+id/mSurfaceView"

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"/>

android:

id="@+id/linearLayout0"

android:

layout_width="wrap_content"

android:

layout_height="fill_parent"

android:

layout_alignParentRight="true"

android:

gravity="center_vertical"

android:

orientation="vertical">

android:

id="@+id/mButton_paizhao"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="@string/camera_app_paizhao"/>

android:

id="@+id/mButton_save"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="@string/camera_app_save"/>

android:

id="@+id/mButton_cancel"

android:

layout_width="wrap_content"

android:

layout_height="wrap_content"

android:

text="@string/camera_app_cancel"/>

c)com.camera.app.CameraActivity

importjava.io.IOException;

importandroid.app.Activity;

//要注意该类的导入,一定是hardware

importandroid.hardware.Camera;

importandroid.os.Bundle;

importandroid.view.SurfaceHolder;

importandroid.view.SurfaceView;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.Window;

importandroid.view.WindowManager;

importandroid.widget.Button;

publicclassCameraActivityextendsActivityimplementsSurfaceHolder.Callback,OnClickListener{

privateSurfaceViewmSurfaceView;

privateSurfaceHoldermSurfaceHolder;

privateCameracamera;

privateButtonmButton_paizhao;

privateButtonmButton_save;

privateButtonmButton_cencel;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.main);

init();

}

publicvoidinit(){

//实例化控件对象

mSurfaceView=(SurfaceView)findViewById(R.id.mSurfaceView);

mButton_paizhao=(Button)findViewById(R.id.mButton_paizhao);

mButton_save=(Button)findViewById(R.id.mButton_save);

mButton_cencel=(Button)findViewById(R.id.mButton_cancel);

mButton_paizhao.setOnClickListener(this);

mButton_save.setOnClickListener(this);

mButton_cencel.setOnClickListener(this);

//调用getHolder()获取一个SurfaceHolder对象

mSurfaceHolder=mSurfaceView.getHolder();

mSurfaceHolder.addCallback(this);

//设置的类型是并不拥有缓存区的表面景象

mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

@Override

publicvoidsurfaceCreated(SurfaceHolderholder){

camera=Camera.open();

try{

camera.setPreviewDisplay(holder);

}catch(IOExceptione){

e.printStackTrace();

}

}

 

@Override

publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,

intheight){

camera.stopPreview();

camera.startPreview();

}

@Override

publicvoidsurfaceDestroyed(SurfaceHolderholder){

camera.stopPreview();

camera.release();

}

Camera.ShutterCallbackshutter=newCamera.ShutterCallback(){

@Override

publicvoidonShutter(){

//TODOAuto-generatedmethodstub

}

};

Camera.AutoFocusCallbackautoFocus=newCamera.AutoFocusCallback(){

@Override

publicvoidonAutoFocus(booleansuccess,Cameracamera){

//TODOAuto-generatedmethodstub

}

};

Camera.PictureCallbackjpeg=newCamera.PictureCallback(){

@Override

publicvoidonPictureTaken(byte[]data,Cameracamera){

//TODOAuto-generatedmethodstub

}

};

@Override

publicvoidonClick(Viewv){

switch(v.getId()){

caseR.id.mButton_paizhao:

camera.autoFocus(autoFocus);

try{

Thread.sleep(2*1000);

}catch(Exceptione){

e.printStackTrace();

}

camera.takePicture(shutter,null,jpeg);

break;

caseR.id.mButton_save:

break;

caseR.id.mButton_cancel:

camera.startPreview();

break;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2