Android 培训之直接控制摄像头 这个课时将会讨论如何通过系统的 APIs 来直接控制摄像头
和使用相机程序拍照和录制视频比起来,直接控制摄像头要比较麻烦一点点
如果您想开发一个专业的相机程序或者完全自定义拍照的界面,这个课时将告诉你如何去做
你也可以参考开发指南里的摄像头章节学习更多的知识
打开摄像头 在控制摄像头之前,需要先获取到 Camera 对象
和 Android 自带的相机程序一样,推荐在另外一个线程中打开摄像头
打开摄像头可能需要消耗一些时间,放到非 UI线程中就不会出现 ANR了
一般可以在 onResume() 函数中启动打开摄像头的线程
如果摄像头正在被其他程序使用,那么调用 Camera
open() 会抛出一个异常,所以要用 try 来处理这个异常
privatebooleansafeCameraOpen(int id){ booleanqOpened=false; try{ releaseCameraAndPreview(); mCamera=Camera
open(id); qOpened=(mCamera
=null); }catch(Exception e){ Log
e(getString(R
string
app_name), "failed to open Camera"); e
printStackTrace(); } returnqOpened; } privatevoidreleaseCameraAndPreview(){ mPreview
setCamera(null); if(mCamera
=null){ mCamera
release(); mCamera=null; } } 从 API level 9 开始,框架支持多个摄像头了
如果使用旧的 API,不设置任何参数调用函数 open() 将会打开第一个背面