Как запустить камеру после принятия разрешения - PullRequest
0 голосов
/ 19 июня 2020

У меня есть фрагмент, содержащий метод, работающий с камерой. Но, когда пользователь впервые входит в приложение и переходит к этому фрагменту, я спрашиваю разрешение камеры. И после того, как пользователь принимает разрешение на использование камеры, камера не запускается. Только после того, как он выйдет из этого фрагмента и вернется к нему, камера запустится.

Думаю, мне нужен слушатель для принятия разрешения.

surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                try {
                    if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                        cameraSource.start(surfaceView.getHolder());
                    } else {
                        ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);

                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }


            }

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете реализовать слушателя PermissionResult как:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == REQUEST_CAMERA_PERMISSION) {
        if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                    cameraSource.start(surfaceView.getHolder());
                else
                    Toast.makeText(context,"Permission denied",Toast.LENGTH_LONG).show();
            }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

Если вы запрашиваете более одного разрешения, вы можете проверить его как:

for (int i = 0; i < permissions.length; i++) {
    String permission = permissions[i];
    int grantResult = grantResults[i];
    //Now check each permission as
    if (permission.equals(Manifest.permission.CAMERA)) {
        //do something like checking granted result
    }
    else if (permission.equals(Manifest.permission.LOCATION)) {
        //do something
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...