From ef993c3930f3a61fc826c013218dd66b91d321fc Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 17 Jun 2016 21:13:25 +0200 Subject: [PATCH] properly handle M permissions at video_capture action --- .../camera/MainActivity.java | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/simplemobiletools/camera/MainActivity.java b/app/src/main/java/com/simplemobiletools/camera/MainActivity.java index 44de0caa..b652eff5 100644 --- a/app/src/main/java/com/simplemobiletools/camera/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/camera/MainActivity.java @@ -63,35 +63,20 @@ public class MainActivity extends AppCompatActivity implements SensorEventListen requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); tryInitCamera(); - - final Intent intent = getIntent(); - if (intent != null) { - if (intent.getExtras() != null && intent.getAction().equals(MediaStore.ACTION_IMAGE_CAPTURE)) { - isImageCaptureIntent = true; - - hideToggleModeAbout(); - final Object output = intent.getExtras().get(MediaStore.EXTRA_OUTPUT); - if (output != null && output instanceof Uri) { - preview.setTargetUri((Uri) output); - } - } else if (intent.getAction().equals(MediaStore.ACTION_VIDEO_CAPTURE)) { - isVideoCaptureIntent = true; - hideToggleModeAbout(); - preview.trySwitchToVideo(); - preview.setIsVideoCaptureIntent(); - shutterBtn.setImageDrawable(getResources().getDrawable(R.mipmap.video_rec)); - } - } } private void hideToggleModeAbout() { - togglePhotoVideoBtn.setVisibility(View.GONE); - aboutBtn.setVisibility(View.GONE); + if (togglePhotoVideoBtn != null) + togglePhotoVideoBtn.setVisibility(View.GONE); + + if (aboutBtn != null) + aboutBtn.setVisibility(View.GONE); } private void tryInitCamera() { if (hasCameraAndStoragePermission()) { initializeCamera(); + handleIntent(); } else { final List permissions = new ArrayList<>(2); if (!Utils.hasCameraPermission(getApplicationContext())) { @@ -104,6 +89,25 @@ public class MainActivity extends AppCompatActivity implements SensorEventListen } } + private void handleIntent() { + final Intent intent = getIntent(); + if (intent != null) { + if (intent.getExtras() != null && intent.getAction().equals(MediaStore.ACTION_IMAGE_CAPTURE)) { + isImageCaptureIntent = true; + hideToggleModeAbout(); + final Object output = intent.getExtras().get(MediaStore.EXTRA_OUTPUT); + if (output != null && output instanceof Uri) { + preview.setTargetUri((Uri) output); + } + } else if (intent.getAction().equals(MediaStore.ACTION_VIDEO_CAPTURE)) { + isVideoCaptureIntent = true; + hideToggleModeAbout(); + preview.setIsVideoCaptureIntent(); + shutterBtn.setImageDrawable(getResources().getDrawable(R.mipmap.video_rec)); + } + } + } + private void initializeCamera() { setContentView(R.layout.activity_main); ButterKnife.bind(this); @@ -129,6 +133,7 @@ public class MainActivity extends AppCompatActivity implements SensorEventListen if (requestCode == CAMERA_STORAGE_PERMISSION) { if (hasCameraAndStoragePermission()) { initializeCamera(); + handleIntent(); } else { Utils.showToast(getApplicationContext(), R.string.no_permissions); finish(); @@ -138,6 +143,8 @@ public class MainActivity extends AppCompatActivity implements SensorEventListen toggleVideo(); } else { Utils.showToast(getApplicationContext(), R.string.no_audio_permissions); + if (isVideoCaptureIntent) + finish(); } } } @@ -241,6 +248,10 @@ public class MainActivity extends AppCompatActivity implements SensorEventListen isAskingPermissions = true; return; } + + if (isVideoCaptureIntent) + preview.trySwitchToVideo(); + disableFlash(); hideTimer(); isInPhotoMode = !isInPhotoMode; @@ -304,10 +315,10 @@ public class MainActivity extends AppCompatActivity implements SensorEventListen super.onResume(); if (hasCameraAndStoragePermission()) { resumeCameraItems(); - } - if (isVideoCaptureIntent && isInPhotoMode) { - toggleVideo(); + if (isVideoCaptureIntent && isInPhotoMode) { + toggleVideo(); + } } }