Android Camera简单例程
来源:互联网 发布:淘宝怎么投诉未生产 编辑:程序博客网 时间:2024/06/03 19:58
CameraDemoActivity.java
package com.lau.camera;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.hardware.Camera;import android.hardware.Camera.PictureCallback;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class CameraDemoActivity extends Activity implements SurfaceHolder.Callback, OnClickListener {private Button btnPlay = null;private SurfaceView surfaceView = null;private SurfaceHolder holder = null;private Camera mCamera = null;/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); viewInit(); } private void viewInit() { btnPlay = (Button) findViewById(R.id.ok); surfaceView = (SurfaceView) findViewById(R.id.surfaceview); holder = surfaceView.getHolder(); holder.addCallback(this);// holder.setFixedSize(176, 144); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); btnPlay.setOnClickListener(this); } @Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(v.getId() == btnPlay.getId()) {mCamera.takePicture(null, null, new PicCallback());}}class PicCallback implements PictureCallback {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {// TODO Auto-generated method stubBitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMdd");Date date = new Date(System.currentTimeMillis());String time = dataFormat.format(date);File picFile = new File(Environment.getExternalStorageDirectory() + "/books/" + time + ".jpg");if(!picFile.exists()) {try {picFile.createNewFile();BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(picFile));bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);bos.flush();bos.close();Toast.makeText(getApplicationContext(), "Success", 3000).show();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();print("Take picture fail.");}}}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {print("surface changed");mCamera.startPreview();}@Overridepublic void surfaceCreated(SurfaceHolder holder) {print("surface created");try {//注意这里不能放在onCreate()里面,否则将无法形成预览效果mCamera = Camera.open();print("open camera success");} catch (Exception e) {mCamera = Camera.open(Camera.getNumberOfCameras()-1);e.printStackTrace();}if(mCamera != null) {try {mCamera.setPreviewDisplay(holder);mCamera.setDisplayOrientation(90);} catch (IOException e) {e.printStackTrace();}} else {Toast.makeText(getApplicationContext(), "Open Camera Fail, exit!", 3000).show();finish();}}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {mCamera.stopPreview();mCamera.release();mCamera = null;}private void print(Object o) {Log.d("DEBUG", "" + o);}}
main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <SurfaceView android:id="@+id/surfaceview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <Button android:id="@+id/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="OK" /></RelativeLayout>
权限:
<uses-permission android:name="android.permission.CAMERA"/><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
参考链接:
http://www.eoeandroid.com/thread-2193-1-1.html
http://blog.csdn.net/liujianminghero/article/details/7464038
http://topic.csdn.net/u/20120518/14/00457380-e333-46f8-9d7f-8eee0d82e3b9.html
http://vaero.blog.51cto.com/4350852/779942
http://stackoverflow.com/questions/3890381/camera-setparameters-failed-in-android setParameters failed,可见此贴。
- Android Camera简单例程
- Android Camera 系统简单分析
- Android Camera 相机简单操作
- Android Widget 简单例程(mp3播放)
- Android Camera 的架构简单简析
- android 简单的原生Camera实现
- Android之Camera的简单实例
- Android中拍照Camera的简单实用
- Android Camera的简单使用浅析
- 简单实现android camera自动聚焦
- com.android.camera.Camera
- Android响应式编程RxAndroid(1):简单例程
- Android camera
- Android Camera
- android camera
- android camera
- Android Camera
- Android Camera
- MFC 序列化一点研究
- 标读“链表处理语言(LISt Processor)”
- 印度和中国程序员的区别
- Android 4.0 ICS SystemUI浅析——StatusBar工作流程之时间日期设置
- 邀请各位sharepoint开发者入驻sharepoint开发社区 sharepoint中文网 (http://www.sahrepointchina.com)
- Android Camera简单例程
- 让IT人远离慢性疲劳,长时间操作电脑需要养成的几个好习惯
- 向脚本传递参数
- cf div2_123_c
- 关于程序员的几个幽默笑话
- 彻底理解C、C++、Win32与COM中的字符串
- 技术精英谈IT程序员的出路在哪里——很经典
- sqlserver建表时设置字段初始默认值的示例
- Hibernate入门BLOG[十一、Hibernate表关联的级联操作]