【发布时间】:2011-04-26 10:27:53
【问题描述】:
我正在android上开发,我想用相机做一些事情(处理像素的值),但只是在后台,是否可以在没有表面视图的情况下做到这一点?只需使用缓冲区来读取像素的值并进行处理。 感谢每一位可以帮助我的人
【问题讨论】:
标签: android
我正在android上开发,我想用相机做一些事情(处理像素的值),但只是在后台,是否可以在没有表面视图的情况下做到这一点?只需使用缓冲区来读取像素的值并进行处理。 感谢每一位可以帮助我的人
【问题讨论】:
标签: android
从 API 级别 11 开始,添加了 SurfaceTexture。有了它,不再需要 SurfaceView。我用我的三星 Galaxy S3 Neo 测试了以下代码。
mCamera = Camera.open();
try {
mCamera.setPreviewTexture(new SurfaceTexture(10));
} catch (IOException e1) {
Log.e(Version.APP_ID, e1.getMessage());
}
Parameters params = mCamera.getParameters();
params.setPreviewSize(640, 480);
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
params.setPictureFormat(ImageFormat.JPEG);
mCamera.setParameters(params);
mCamera.startPreview();
mCamera.takePicture(null, null, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(Version.APP_ID, "picture-taken");
}
});
【讨论】:
new SurfaceTexture(10) 中的10 是什么?我们可以使用任何数字吗? 10 特殊吗?您之前是否按照文档命令生成了具有该 ID 的纹理?这比使用SurfaceView 更好吗?
我一直在寻找这个问题的答案。我在那里找到的,为方便起见,复制到这里。
http://handycodeworks.com/?p=19
基本上,让我们创建一个虚拟的 SurfaceView(它甚至可以在服务内部工作),并将其用于相机功能。
SurfaceView view = new SurfaceView(this);
c.setPreviewDisplay(view.getHolder());
c.startPreview();
c.takePicture(shutterCallback, rawPictureCallback, jpegPictureCallback);
【讨论】: