first be sure to use permission in the manifest
<uses-permission android:name="android.permission.CAMERA" />
then, before calling takePicture, call startPreview as follows:
private void takePicture() { openCamera(); camera.startPreview(); camera.takePicture(new ShutterCallback() { @Override public void onShutter() { } }, new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { } }, new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length); img_screenshot.setImageBitmap(bitmap); closeCamera(); } }); } private void openCamera() { camera = Camera.open(); Camera.Parameters params = camera.getParameters(); List<Size> sizes = params.getSupportedPictureSizes(); Size mSize = sizes.get(0); params.setPictureSize(mSize.width, mSize.height); camera.setParameters(params); } private void closeCamera() { camera.release(); }
Emran sadeghi
source share