diff options
Diffstat (limited to 'apps/TestingCamera2/src/com/android/testingcamera2/v1/TestingCamera2.java')
-rw-r--r-- | apps/TestingCamera2/src/com/android/testingcamera2/v1/TestingCamera2.java | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/apps/TestingCamera2/src/com/android/testingcamera2/v1/TestingCamera2.java b/apps/TestingCamera2/src/com/android/testingcamera2/v1/TestingCamera2.java index 64fa8a4..9bd3113 100644 --- a/apps/TestingCamera2/src/com/android/testingcamera2/v1/TestingCamera2.java +++ b/apps/TestingCamera2/src/com/android/testingcamera2/v1/TestingCamera2.java @@ -16,7 +16,9 @@ package com.android.testingcamera2.v1; +import android.Manifest; import android.app.Activity; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -108,7 +110,7 @@ public class TestingCamera2 extends Activity implements SurfaceHolder.Callback { private final Set<View> mManualControls = new HashSet<View>(); private final Set<View> mAutoControls = new HashSet<View>(); - + private static final int PERMISSIONS_REQUEST_CAMERA = 1; Handler mMainHandler; boolean mUseMediaCodec; @@ -196,9 +198,45 @@ public class TestingCamera2 extends Activity implements SurfaceHolder.Callback { @Override public void onResume() { super.onResume(); - try { - if (VERBOSE) Log.v(TAG, String.format("onResume")); + if (VERBOSE) Log.v(TAG, String.format("onResume")); + + if ((checkSelfPermission(Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED ) + || (checkSelfPermission(Manifest.permission.RECORD_AUDIO) + != PackageManager.PERMISSION_GRANTED) + || (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED)) { + Log.i(TAG, "Requested camera/video permissions"); + requestPermissions(new String[] { + Manifest.permission.CAMERA, + Manifest.permission.RECORD_AUDIO, + Manifest.permission.WRITE_EXTERNAL_STORAGE}, + PERMISSIONS_REQUEST_CAMERA); + return; + } + setUpPreview(); + } + + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, + int[] grantResults) { + if (requestCode == PERMISSIONS_REQUEST_CAMERA) { + for (int i = 0; i < grantResults.length; i++) { + if (grantResults[i] == PackageManager.PERMISSION_DENIED) { + Log.i(TAG, "At least one permission denied, can't continue: " + permissions[i]); + finish(); + return; + } + } + + Log.i(TAG, "All permissions granted"); + setUpPreview(); + } + } + + private void setUpPreview() { + try { mCameraOps.minimalPreviewConfig(mPreviewView.getHolder()); mCurrentPreviewHolder = mPreviewView.getHolder(); } catch (ApiFailureException e) { |