2016-08-31 2 views
0

내 앱에서 카메라 옵션을 사용하고 있지만 일부 장치에서만 작동합니다. 또한 작물 옵션이 필요합니다.카메라 및 갤러리 자르기 옵션

super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == GALLERY_CODE && resultCode == RESULT_OK && null != data) { 

     mImageCaptureUri = data.getData(); 
     System.out.println("Gallery Image URI : "+mImageCaptureUri); 
     CropingIMG(); 

    } 
} 

답변

1

카메라 문제를 해결하려면, 내가 사용하고 다음과 같은 방법

  1. onSaveInstanceState CameraIntentHelper

  2. onRestoreInstanceState

  3. onActivityResult를

    private void selectImage() { 
    
    final CharSequence[] options = {"Take Photo", "Choose from Gallery", "Cancel"}; 
    AlertDialog.Builder builder = new AlertDialog.Builder(PhotoSuiteActivity.this); 
    builder.setTitle("Add Photo!"); 
    builder.setItems(options, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int item) { 
    
         if (options[item].equals("Take Photo")) { 
          if (mCameraIntentHelper != null) { 
           mCameraIntentHelper.startCameraIntent(); 
          } else { 
           Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
           String imageFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/picture.png"; 
           File imageFile = new File(imageFilePath); 
           picUri = Uri.fromFile(imageFile); // convert path to Uri 
           takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, picUri); 
           startActivityForResult(takePictureIntent, CAMERA_CAPTURE); 
          } 
         } else if (options[item].equals("Choose from Gallery")) { 
          Toast.makeText(PhotoSuiteActivity.this, "Not yet Ready...!", Toast.LENGTH_SHORT).show(); 
          Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
          // Start the Intent 
          startActivityForResult(galleryIntent, PICK_IMAGE_REQUEST); 
         } else if (options[item].equals("Cancel")) { 
          dialog.dismiss(); 
         } 
        } 
    }); 
    builder.show(); 
    
    } 
    
    private void setupCameraIntentHelper() { 
        mCameraIntentHelper = new CameraIntentHelper(this, new CameraIntentHelperCallback() { 
         @Override 
         public void onPhotoUriFound(Date dateCameraIntentStarted, Uri photoUri, int rotateXDegrees) { 
          messageView.setText(getString(R.string.activity_camera_intent_photo_uri_found) + photoUri.toString()); 
          mImageCaptureUri = photoUri; 
          Bitmap photo = BitmapHelper.readBitmap(PhotoSuiteActivity.this, photoUri); 
          if (photo != null) { 
           photo = BitmapHelper.shrinkBitmap(photo, 300, rotateXDegrees); 
           imageView.setImageBitmap(photo); 
           CropingIMG(); 
          } 
         } 
        @Override 
        public void deletePhotoWithUri(Uri photoUri) { 
         BitmapHelper.deleteImageWithUriIfExists(photoUri, PhotoSuiteActivity.this); 
        } 
    
        @Override 
        public void onSdCardNotMounted() { 
         Toast.makeText(getApplicationContext(), getString(R.string.error_sd_card_not_mounted), Toast.LENGTH_LONG).show(); 
        } 
    
        @Override 
        public void onCanceled() { 
         Toast.makeText(getApplicationContext(), getString(R.string.warning_camera_intent_canceled), Toast.LENGTH_LONG).show(); 
        } 
    
        @Override 
        public void onCouldNotTakePhoto() { 
         Toast.makeText(getApplicationContext(), getString(R.string.error_could_not_take_photo), Toast.LENGTH_LONG).show(); 
        } 
    
        @Override 
        public void onPhotoUriNotFound() { 
         messageView.setText(getString(R.string.activity_camera_intent_photo_uri_not_found)); 
        } 
    
        @Override 
        public void logException(Exception e) { 
         Toast.makeText(getApplicationContext(), getString(R.string.error_sth_went_wrong), Toast.LENGTH_LONG).show(); 
         Log.d(getClass().getName(), e.getMessage()); 
        } 
    }); 
    } 
    
관련 문제