Я пытаюсь отобразить предварительный просмотр камеры с наложением изображения, и внизу есть кнопка, чтобы сделать снимок. Я в значительной степени скопировал API из CameraPreview и добавил 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, но я не могу заставить его работать.
О да, я потратил около половины дня на эту область, поэтому, если бы вы могли упростить это для меня, мой жаркий разум был бы благодарен. :)