Я пытаюсь захватить изображение с пользовательской камеры SurfaceView. Я установил исходный код, но я не знаю, как вызвать метод «взять фотографию», чтобы я мог видеть предварительный просмотр на поверхности.Захват фотографии с SurfaceView
В настоящее время этот код отображает предварительный просмотр в режиме реального времени. Мне нужно, чтобы сделать снимок и получить доступ к байт [] массив
Пожалуйста, помогите мне заполнить код:
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
captureImage = (ImageButton) findViewById(R.id.captureImage);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView);
captureImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//this button press should take the picture
}
});
mSurfaceView.getHolder().addCallback(this);
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera = Camera.open();
}
@Override
public void onPause() {
super.onPause();
mCamera.stopPreview();
}
@Override
public void onDestroy() {
super.onDestroy();
mCamera.release();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(mSurfaceView.getHolder());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters params = mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPreviewSizes();
Camera.Size selected = sizes.get(0);
params.setPreviewSize(selected.width,selected.height);
mCamera.setParameters(params);
mCamera.setDisplayOrientation(90);
mCamera.startPreview();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
мне нужно, чтобы получить байт [] данные, так что я могу преобразовать изображение в base64 string. Как я могу назвать необходимые методы, чтобы сделать снимок, используя код выше?
реализовать 'Camera.PictureCallback' –
@MD могли бы вы должны мне пример кода, пожалуйста? Я пытался это сделать, но я немного смущен. Как мне получить байт []? – Dinuka
Ждать, я отправлю образец кода –