public void openGallery() {
    PhotoAlbumPickerActivity fragment = new PhotoAlbumPickerActivity(true, null);
    fragment.setDelegate(
        new PhotoAlbumPickerActivity.PhotoAlbumPickerActivityDelegate() {
          @Override
          public void didSelectPhotos(
              ArrayList<String> photos,
              ArrayList<String> captions,
              ArrayList<MediaController.SearchImage> webPhotos) {
            if (!photos.isEmpty()) {
              Bitmap bitmap = ImageLoader.loadBitmap(photos.get(0), null, 800, 800, true);
              processBitmap(bitmap);
            }
          }

          @Override
          public void startPhotoSelectActivity() {
            try {
              Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
              photoPickerIntent.setType("image/*");
              parentFragment.startActivityForResult(photoPickerIntent, 14);
            } catch (Exception e) {
              FileLog.e("tmessages", e);
            }
          }

          @Override
          public boolean didSelectVideo(String path) {
            return true;
          }
        });
    parentFragment.presentFragment(fragment);
  }
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (resultCode == Activity.RESULT_OK) {
     if (requestCode == 13) {
       PhotoViewer.getInstance().setParentActivity(parentFragment.getParentActivity());
       int orientation = 0;
       try {
         ExifInterface ei = new ExifInterface(currentPicturePath);
         int exif =
             ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
         switch (exif) {
           case ExifInterface.ORIENTATION_ROTATE_90:
             orientation = 90;
             break;
           case ExifInterface.ORIENTATION_ROTATE_180:
             orientation = 180;
             break;
           case ExifInterface.ORIENTATION_ROTATE_270:
             orientation = 270;
             break;
         }
       } catch (Exception e) {
         FileLog.e("tmessages", e);
       }
       final ArrayList<Object> arrayList = new ArrayList<>();
       arrayList.add(
           new MediaController.PhotoEntry(0, 0, 0, currentPicturePath, orientation, false));
       PhotoViewer.getInstance()
           .openPhotoForSelect(
               arrayList,
               0,
               1,
               new PhotoViewer.EmptyPhotoViewerProvider() {
                 @Override
                 public void sendButtonPressed(int index) {
                   String path = null;
                   MediaController.PhotoEntry photoEntry =
                       (MediaController.PhotoEntry) arrayList.get(0);
                   if (photoEntry.imagePath != null) {
                     path = photoEntry.imagePath;
                   } else if (photoEntry.path != null) {
                     path = photoEntry.path;
                   }
                   Bitmap bitmap = ImageLoader.loadBitmap(path, null, 800, 800, true);
                   processBitmap(bitmap);
                 }
               },
               null);
       AndroidUtilities.addMediaToGallery(currentPicturePath);
       currentPicturePath = null;
     } else if (requestCode == 14) {
       if (data == null || data.getData() == null) {
         return;
       }
       startCrop(null, data.getData());
     }
   }
 }
 public void openCamera() {
   try {
     Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     File image = AndroidUtilities.generatePicturePath();
     if (image != null) {
       takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
       currentPicturePath = image.getAbsolutePath();
     }
     parentFragment.startActivityForResult(takePictureIntent, 13);
   } catch (Exception e) {
     FileLog.e("tmessages", e);
   }
 }
 private void startCrop(String path, Uri uri) {
   try {
     LaunchActivity activity = (LaunchActivity) parentFragment.getParentActivity();
     if (activity == null) {
       return;
     }
     Bundle args = new Bundle();
     if (path != null) {
       args.putString("photoPath", path);
     } else if (uri != null) {
       args.putParcelable("photoUri", uri);
     }
     PhotoCropActivity photoCropActivity = new PhotoCropActivity(args);
     photoCropActivity.setDelegate(this);
     activity.presentFragment(photoCropActivity);
   } catch (Exception e) {
     FileLog.e("tmessages", e);
     Bitmap bitmap = ImageLoader.loadBitmap(path, uri, 800, 800, true);
     processBitmap(bitmap);
   }
 }