android camera 翻译(android.hardware.Camera)
http://developer.android.com/reference/android/hardware/Camera.html
camera类用来设置图像的配置,启动或者停止预览,抓图,和为图像编码找回帧图。这个camera类是作为camera服务的客户端,是用来控制真实的摄像硬件。
要访问摄像设备,你必须在manifest里面申明camera权限,必须保证包括<uses-feature>元素,比如你要使用摄像和自动对焦功能,你的manifest必须包括如下内容:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
要通过此类来实现照相功能,你可以使用如下几步:
1、通过open(int)来获得一个Camera实例。
2、通过getParameters()方法获得现有的设置。
3、如有必要,修改能过Camera.Parameters 返回的parameter对象,然后调用setParameters(Camera.Parameters).
4、如有需要,调用setDisplayOrientation(int). (备注:此方法在2.1版本里没有,在2.2+中有,但发现在2.2中调用会报错,最后使用了parameters.setRotation(int);)
5、重要:setPreviewDisplay(SurfaceHolder)前对SurfaceHolder进行完全的初始化,没有surface,camera将不能启动预览。
6、重要:调用startPreview方法来启动更新预览界面。预览必须在你可以照相前启动。
7、如果你需要,调用takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback, Camera.PictureCallback)来抓取一张相片,等待
callbacks为你提供真实的图像数据。
8、照完相后,预览视图将停止,需要再照时,首先要再次调用startPreview()方法。
9、调用stopPreview()方法来停止更新预览界面。
10、重要:调用release()方法来释放被其它应用使用的摄像头。应用必须在onPause()方法里尽快的释放camera并且在onResume()方法对其重新open();
要快速的切换到摄像模式,使用如下步骤:
1、获得和初始化一个camera对象,并且像上面一样启动预览。
2、调用unlock()方法来允许媒体进程来访问camera。
3、通过camera对象来设置setCamera(camera)。参考MediaRecorder关于录制视频的信息。
4、当摄像完成后,调用reconnect()方法来重新获得和挂锁camera对象。
5、如果需要,重启预览以照相和摄像。
6、像上面一样,调用stopPreview()方法和release()方法。
Camera类不是线程安全的,这就意味着只能在单线程中使用。大多数耗时操作(如:预览,对焦,抓图等等)发生的不同时,而且在必要时调用回调方法。
回调方法的调用是发生在调用open(int)方法的线程上。这个类的方法不能被多线程同时调用。
(注意:不同的android的设备可能有不同的设备指标,比如像素值和自动对焦功能。为了保证你的应用在大多数设备上有效果,你不能在设备指标上进行假设。)