【发布时间】:2011-08-23 01:15:22
【问题描述】:
我正在尝试显示带有图像叠加层的相机预览,并在底部有一个按钮来拍照。我几乎从 CameraPreview 复制了 API,并添加了一个 addcontentview,它似乎可以很好地添加一个 xml 文件作为我的覆盖。 (除非它必须处于横向模式,所以我需要弄清楚如何通过代码旋转我所有的东西,或者对我来说更容易,只是制作横向图像:-P)
我的问题是我不知道如何让我的按钮正常工作。
我要做的就是将图像用作下一个活动的背景。不管怎样,这就是我所拥有的。
public class CameraPreview extends Activity {
private Preview mPreview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mPreview = new Preview(this);
setContentView(mPreview);
LayoutInflater inflater = getLayoutInflater();
getWindow().addContentView(inflater.inflate(R.layout.overlay, null), new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT));
}
}
// ----------------------------------------------------------------------
class Preview extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder mHolder;
Camera mCamera;
Preview(Context context) {
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}
我只是不知道在哪里放置我的按钮,输入什么或任何东西。我假设它类似于 camera.takepicture 但我无法让它工作。
哦,是的,我在这一领域花了大约半天的时间,所以如果你能为我超级简化它,我油腻的头脑会很感激的。 :)
【问题讨论】: