在android pie中拍照时的相机问题(9)
嗨,我正在用surface view拍摄这张照片。拍照在除android pie外的所有版本中都有效在android pie中拍照时出错。有人能帮我解决问题吗。这是我的密码 CameraPreview.java在android pie中拍照时的相机问题(9),android,camera,surfaceview,android-9.0-pie,surfaceholder,Android,Camera,Surfaceview,Android 9.0 Pie,Surfaceholder,嗨,我正在用surface view拍摄这张照片。拍照在除android pie外的所有版本中都有效在android pie中拍照时出错。有人能帮我解决问题吗。这是我的密码 CameraPreview.java public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mSurfaceHolder; private Camera mCam
public class CameraPreview extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
// Constructor that obtains context and camera
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera) {
super(context);
this.mCamera = camera;
this.mSurfaceHolder = this.getHolder();
this.mSurfaceHolder.addCallback(this);
this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
if(mCamera == null) return;
try {
if(mCamera != null) {
mCamera.setPreviewDisplay(surfaceHolder);
mCamera.startPreview();
}
} catch (IOException e) {
// left blank for now
}
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.setPreviewCallback(null);
mCamera.release();
mCamera = null;
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
int width, int height) {
try {
Camera.Parameters parameters = mCamera.getParameters();
mCamera.setParameters(parameters);
mCamera.startPreview();
/* this.mCamera.setPreviewDisplay(surfaceHolder);
this.mCamera.startPreview();*/
} catch (Exception e) {
}
}
}
ManiActivity.java
public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback, Camera.PictureCallback {
private SurfaceHolder surfaceHolder;
private Camera camera;
public static final int REQUEST_CODE = 100;
private SurfaceView surfaceView;
private String[] neededPermissions = new String[]{CAMERA, WRITE_EXTERNAL_STORAGE};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
preview = (FrameLayout) findViewById(R.id.camera_preview);
currentCameraId = Camera.CameraInfo.CAMERA_FACING_FRONT;
mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
mCameraPreview = new CameraPreview(mContext, mCamera);
preview.addView(mCameraPreview);
mSurface = new SurfaceTexture(123);
Camera.Parameters params = mCamera.getParameters();
int angle = 0;
if (cameraMode.equals("back")) {
} else {
angle = 270;
}
if (autoFocusSupported(mCamera)) {
params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
} else {
Log.w(TAG, "Autofocus is not supported");
}
mCamera.setParameters(params);
mCamera.setPreviewCallback(MainActivity.this);
mCamera.setErrorCallback(MainACtivity.this);
mCamera.startPreview();
captureImage();
}
public void captureImage() {
if (camera != null) {
camera.takePicture(null, null, this);
}
}
@Override
public void onPictureTaken(byte[] bytes, Camera camera) {
我的相机出错。拍照我无法拍摄图像。仅在android 9版本中