Android 使用摄像头。
来源:互联网 发布:那些年的经典网络歌曲 编辑:程序博客网 时间:2024/05/21 20:25
本文章只是讲解在Android中调用摄像头, 并无拍照功能。
权限申请:
<uses-permission android:name="android.permission.CAMERA" />
首先, 我们需要先在XML里添加一个SurfaceView控件来显示摄像头拍摄到的画面。
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><SurfaceView android:id="@+id/surface" android:layout_width="fill_parent" android:layout_height="fill_parent" ></SurfaceView></LinearLayout>
然后, 在JAVA中我们需要实现SurfaceHolder.Callback这个接口, 它有三个方法
@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height){}@Overridepublic void surfaceCreated(SurfaceHolder holder){InitCamera();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder){// TODO Auto-generated method stub}
surfaceChanged: 当摄像头屏幕改变时
surfaceCreated: 当摄像头创建完毕时(我们可以在这里对摄像头进行初始化)
surfaceDestroyed:摄像头关闭时
下面是源码:
public class Page extends Activity implements SurfaceHolder.Callback{private Camera mCamera;private SurfaceHolder mSurfaceHolder; //SurfaceView的控制类private SurfaceView mSurfaceView;private boolean isPreview = false;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.ar_page);mSurfaceView = (SurfaceView)findViewById(R.id.surface);mSurfaceHolder = mSurfaceView.getHolder();mSurfaceHolder.addCallback(this);//设置回调mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height){}@Overridepublic void surfaceCreated(SurfaceHolder holder){//初始化摄像头InitCamera();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder){// TODO Auto-generated method stub}private void InitCamera(){if(isPreview) return;mCamera = Camera.open();if(mCamera != null){try{mCamera.setPreviewDisplay(mSurfaceHolder);mCamera.setDisplayOrientation(90);//注意: 该方法实现摄像头90度旋转(摄像头默认是横的) 需2.2及以上版本mCamera.startPreview();} catch (Exception e){// TODO: handle exception}isPreview = true;}}}
要注意,在关闭应用时必须释放摄像头, 否则下次开启时, 由于摄像头被占用, 就会导致程序出错。 其它使用了摄像头的软件也一样。
@Overrideprotected void onPause(){super.onPause();if (mCamera != null){mCamera.release();mCamera = null;}}
- Android 使用摄像头。
- Android使用摄像头拍照
- Android使用摄像头拍照
- Android 摄像头的使用
- Android 使用摄像头拍照
- Android之使用摄像头拍照
- android之使用摄像头拍照
- android 摄像头使用问题小结
- Android 使用摄像头和相册
- Android学习 - android摄像头使用方式
- Android实现简单拍照(使用摄像头)
- Android摄像头
- 摄像头 android
- Android 摄像头
- 摄像头使用
- android-摄像头-调用前置摄像头
- Android调用系统摄像头--使用MediaRecorder--1--预览(preview)功能
- Android调用系统摄像头--使用MediaRecorder--1--预览(preview)功能
- QPS、PV和需要部署机器数量计算公式
- CELayoutEditor中控件上中文的显示
- 【java】JSON for java入门总结
- 哈夫曼编码
- Linux性能监测:内存篇
- Android 使用摄像头。
- C语言趣事之内存泄露
- Hibernate 中 formula的简单应用
- NET Framework 4 中的新增功能
- MoreEffictiveC++读书笔记
- heap corruption detected ,释放内存时出错
- DisplayMetrics
- ADO.NET操纵Excel 标点符号 数字和字符混合问题! HDR=Yes;IMEX=1
- pda hvga vga