1

J'essaie de recadrer un image (que j'ai choisi de la galerie ou pris de mon appareil photo) et le passer à un autre activity qui devrait télécharger le image à mon stockage firebase.Image-Crop-Activity n'envoie pas Image-Uri à l'activité de réception (Android-Image-Cropper)

Au début (sans le recadrage d'image) tout s'est bien passé. J'ai été en mesure de passer et télécharger le image ... mais après avoir ajouté le code image-crop-code à mon onActivityResult il ferme juste l'imageCropActivity après avoir pressé 'recadrer' et revient à mon MainActivity.

J'ai essayé, mais je ne peux vraiment pas comprendre pourquoi il le fait. Peut-être que je manque quelque chose. Des idées?

Pour la culture de l'image que je utilise ce libary: https://github.com/ArthurHub/Android-Image-Cropper

Activité principale

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     mImageUri_gallery = data.getData(); 
     mImageUri_camera = data.getData(); 


     if (requestCode == 100 && resultCode == RESULT_OK) { 
      CropImage.activity(mImageUri_gallery) 
        .setGuidelines(CropImageView.Guidelines.ON) 
        .start(this); 
      if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
       CropImage.ActivityResult result = CropImage.getActivityResult(data); 
       if (resultCode == RESULT_OK) { 
        Uri resultUriGallery = result.getUri(); 
        Intent intentGallery = new Intent(MainActivity.this, ImagePostActivity.class); 
        intentGallery.putExtra("image-uri", resultUriGallery.toString()); 
        startActivity(intentGallery); 
       } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
        Exception error = result.getError(); 
       } 
      } 

     } else if (resultCode != RESULT_CANCELED && data != null) { 
      if (requestCode == 200 && resultCode == RESULT_OK) { 
       CropImage.activity(mImageUri_camera) 
         .setGuidelines(CropImageView.Guidelines.ON) 
         .start(this); 
       if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
        CropImage.ActivityResult result = CropImage.getActivityResult(data); 
        if (resultCode == RESULT_OK) { 
         Uri resultUriCamera = result.getUri(); 
         Intent intentCamera = new Intent(MainActivity.this, ImagePostActivity.class); 
         intentCamera.putExtra("image-uri", resultUriCamera.toString()); 
         startActivity(intentCamera); 
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
         Exception error = result.getError(); 
        } 
       } 

      } 
     } 


    } 

ImagePostActivity

public class ImagePostActivity extends AppCompatActivity { 

    public static TextView txt_btn_post; 
    public static EditText mPostTitle; 
    public static ImageView imagePostPreview; 
    private StorageReference mStorage; 
    private DatabaseReference mDatabase; 
    private ProgressDialog mProgress; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image_post); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     mStorage = FirebaseStorage.getInstance().getReference(); 
     mDatabase = FirebaseDatabase.getInstance().getReference().child("Test_Stream_Uploads"); 
     mProgress = new ProgressDialog(this); 
//  mPostTitle = (EditText) findViewById(R.id.mPostTitle); 
     imagePostPreview = (ImageView) findViewById(R.id.imagePostPreview); 
     Intent intent = getIntent(); 

     mImageUri_gallery = Uri.parse(intent.getStringExtra("image-uri")); 
     imagePostPreview.setImageURI(mImageUri_gallery); 
     mImageUri_camera = Uri.parse(intent.getStringExtra("image-uri")); 
     imagePostPreview.setImageURI(mImageUri_camera); 

     txt_btn_post = (TextView) findViewById(R.id.txt_btn_post); 
     txt_btn_post.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startPosting(); 
      } 
     }); 


    } 

    private void startPosting() { 

     mProgress.setMessage("Bild wird hochgeladen..."); 
     mProgress.show(); 
     if (mImageUri_gallery != null) { 
      StorageReference filepath = mStorage.child("Stream_Image").child(mImageUri_gallery.getLastPathSegment()); 
      filepath.putFile(mImageUri_gallery).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
        Uri downloadUrl = taskSnapshot.getDownloadUrl(); 
        Intent intent = new Intent(getBaseContext(), MainActivity.class); 
        DatabaseReference newPost = mDatabase.push(); 
        newPost.child("image").setValue(downloadUrl.toString()); 
        mProgress.dismiss(); 
        startActivity(intent); 
       } 
      }); 
     } 


    } 
} 

Répondre

0

J'utilise aussi activement cet outil et En fait, je n'ai pas vraiment intégré votre code, mais je peux vous un exemple de la façon dont cela fonctionne pour moi. Si vous regardez dans cela, vous pouvez facilement suivre et avoir l'idée. Cela fonctionne pour les images que vous prenez de la galerie.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == GALLERY_REQUEST && resultCode == RESULT_OK){ 
     Uri imageUri = data.getData(); 
     CropImage.activity(imageUri) 
       .setGuidelines(CropImageView.Guidelines.ON) 
       .setAspectRatio(144,81) 
       .start(this); 
    } 
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
     CropImage.ActivityResult result = CropImage.getActivityResult(data); 
     if (resultCode == RESULT_OK) { 
      Uri resultUri = result.getUri(); 
      ib_image.setImageURI(resultUri); 
     } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) { 
      Exception error = result.getError(); 
     } 
    } 
} 

Si vous voulez appliquer à l'image que vous venez de prendre de l'appareil, vous devrez créer votre propre uri, il est un peu long chemin, mais il est expliqué dans la documentation Android :(https://developer.android.com/training/camera/photobasics.html#TaskPhotoView), ceci que j'ai expliqué dans une discussion ici: Image capture with camera & upload to Firebase (Uri in onActivityResult() is null)

+0

Merci! Je vais l'essayer et vous laisser savoir si cela a fonctionné pour moi – Ron

+0

@ Ron a-t-il fonctionné? –