Mil*_*d M 8 crash android image
我正在使用此代码拍照,在模拟器中它正常工作.它不适用于物理移动设备,并且在Samsung Galaxy S4和Sony Xperia Z2上出错.
我的代码:
private void takePicture() {
openCamera();
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();
}
Run Code Online (Sandbox Code Playgroud)
小智 2
首先确保清单中的使用权限
<uses-permission android:name="android.permission.CAMERA" />
Run Code Online (Sandbox Code Playgroud)
之后,在调用 takePicture 之前,调用 startPreview,如下所示:
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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
263 次 |
| 最近记录: |