Android Camera照相机

来源:互联网 发布:淘宝自己制作模板 编辑:程序博客网 时间:2024/05/01 16:12
java代码:
package com.Aina.Android;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.PixelFormat;import android.hardware.Camera;import android.util.Log;import android.view.KeyEvent;import android.view.SurfaceHolder;import android.view.SurfaceView;/** * com.Aina.Android Pro_Camera *  * @author Aina.huang E-mail: 674023920@qq.com * @version 创建时间:2010 Jul 7, 2010 2:50:15 PM 类说明 */public class PreView extends SurfaceView implements SurfaceHolder.Callback {private SurfaceHolder holder = null;private Camera mCamera = null;private Bitmap mBitmap = null;public PreView(Context context) {super(context);Log.i("TAG", "PreView()");// TODO Auto-generated constructor stubholder = this.getHolder();holder.addCallback(this);holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {Log.i("TAG", "surfaceChanged");// TODO Auto-generated method stubCamera.Parameters parameters = mCamera.getParameters();parameters.setPictureFormat(PixelFormat.JPEG);//设置图片格式parameters.setPreviewSize(320, 480);//设置尺寸//parameters.setPictureSize(320, 480);//设置分辨率mCamera.setParameters(parameters);mCamera.startPreview();//开始预览}public void surfaceCreated(SurfaceHolder holder) {Log.i("TAG", "surfaceCreated");// TODO Auto-generated method stubmCamera = Camera.open();//启动服务try {mCamera.setPreviewDisplay(holder);//设置预览} catch (IOException e) {mCamera.release();//释放mCamera = null;}}public void surfaceDestroyed(SurfaceHolder holder) {Log.i("TAG", "surfaceDestroyed");// TODO Auto-generated method stubmCamera.stopPreview();//停止预览mCamera = null;}public boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER){if(mCamera !=null){mCamera.takePicture(null, null,pic);}}return super.onKeyDown(keyCode, event);}//拍照后输出图片public Camera.PictureCallback pic = new Camera.PictureCallback(){public void onPictureTaken(byte[] data, Camera camera) {// TODO Auto-generated method stubmBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);File f = new File(android.os.Environment.getExternalStorageDirectory()+"/camera1.jpg");try {BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f));mBitmap.compress(Bitmap.CompressFormat.JPEG, 80, os);os.flush();os.close();Canvas canvas = holder.lockCanvas();canvas.drawBitmap(mBitmap, 0, 0, null);holder.unlockCanvasAndPost(canvas);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};}


package com.Aina.Android;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.Window;public class Test extends Activity {    /** Called when the activity is first created. */private PreView pv = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.requestWindowFeature(Window.FEATURE_NO_TITLE);        pv = new PreView(this);        setContentView(pv);    }@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubreturn pv.onKeyDown(keyCode, event);}    }


<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.Aina.Android"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".Test"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application> <uses-permission android:name="android.permission.CAMERA" />  <uses-feature android:name="android.hardware.camera" />  <uses-feature android:name="android.hardware.camera.autofocus" /></manifest> 


原创粉丝点击