在android pie中拍照时的相机问题(9)

在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

嗨,我正在用surface view拍摄这张照片。拍照在除android pie外的所有版本中都有效在android pie中拍照时出错。有人能帮我解决问题吗。这是我的密码

CameraPreview.java

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版本中