java 在线拍照代码
在数码相机的普及(尤其是在电话手机),导致其价格下降就像他们的规模大幅缩水。
它现在越来越难找到,即使没有摄像头的手机,和机器人设备不可能例外。要访问相机
的硬件,你需要添加到您的照相机许可应用程序清单,如下所示:
<uses-permission android:name="android.permission.CAMERA"/>
这授予访问相机服务。该相机类可以调整相机设置,拍照,摄像和处理流媒体预览。要
访问照相机服务,使用相机的静态类的open方法。当您的应用程序与相机后,记得致电
放弃后释放的简单使用模式的代码片段所示您对服务进行:
Camera camera = Camera.open();
[ … Do things with the camera … ]
camera.release();
控制摄像头设置
目前的相机设置可以作为Camera.Parameters对象。呼吁相机的getParameters方法来访
问当前的参数。您可以使用设置在返回的参数*方法修改设置。以应用更改,请
setParameters,作为修改后的价值的承传如下:
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
该相机的参数可以用来指定图片和预览的大小,图像格式和预览帧速率。
使用相机预览
进入相机的流式视频意味着您可以合并到应用现场视频。最令人兴奋的早期机器人应用
一些用作充实的现实基础,此功能。该相机可显示预览实时到一个表面,如下面的代码
片段所示:
camera.setPreviewDisplay(mySurface);
camera.startPreview();
[ … ]
camera.stopPreview();
您将了解在下一章表面多,虽然机器人包括一个用SurfaceView显示实时摄像头预览很好
的例子。这个例子可以在图形/ CameraPreview在SDK API的演示项目。
您也可以指定一个PreviewCallback被解雇每个预览框,让您操作或显示每个单独帧预览
。调用对象的照相机setPreviewCallback方法,在新的PreviewCallback覆盖
onPreviewFrame方法传递的执行情况如下所示:
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
// TODO Do something with the preview image.
}
});
过调用一个Camera对象takePicture图片,在ShutterCallback和RAW和JPEG
PictureCallback实现通过编码的图像。每个图片回调将收到的字节数组代表以适当的格
式的图像,而快门回调触发快门后立即关闭
private void takePicture() {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
// TODO Do something when the shutter closes.
}
};
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image RAW data.
}
};
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] _data, Camera _camera) {
// TODO Do something with the image JPEG data.
}
};