From e94ffde26a97a3ccebd9b71f5c0cc1ef20933728 Mon Sep 17 00:00:00 2001 From: IbrahimSaeedPurdue <54752803+IbrahimSaeedPurdue@users.noreply.github.com> Date: Wed, 10 Mar 2021 21:33:55 -0500 Subject: [PATCH 1/2] feature/upload gallery image to firebase --- app/build.gradle | 1 + .../InspectionForm.java | 66 +++++++++++++++++++ .../main/res/layout/activity_sample_fordm.xml | 25 ++++--- 3 files changed, 83 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index eea8c58..b11c57e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,6 +41,7 @@ dependencies { implementation 'androidx.annotation:annotation:1.1.0' implementation 'com.google.firebase:firebase-auth:19.4.0' implementation 'com.google.firebase:firebase-firestore:21.6.0' + implementation 'com.google.firebase:firebase-storage:19.2.1' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java index 9efb51c..d3e801a 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/InspectionForm.java @@ -1,16 +1,28 @@ package com.sf.stormwaterutilityandroid; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.widget.Button; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.gms.tasks.OnFailureListener; +import com.google.android.gms.tasks.OnSuccessListener; +import com.google.android.gms.tasks.Task; import com.google.firebase.firestore.FirebaseFirestore; +import com.google.firebase.storage.FirebaseStorage; +import com.google.firebase.storage.StorageReference; +import com.google.firebase.storage.UploadTask; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.UUID; + +import javax.annotation.Nullable; import me.riddhimanadib.formmaster.FormBuilder; import me.riddhimanadib.formmaster.model.BaseFormElement; @@ -24,7 +36,13 @@ public class InspectionForm extends AppCompatActivity { private RecyclerView recyclerView; + private Button submitButton; + private Button uploadImageButton; + + private Uri imageUri; + private FirebaseStorage storage; + private StorageReference storageReference; @Override protected void onCreate(Bundle savedInstanceState) { @@ -32,7 +50,11 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_sample_fordm); recyclerView = findViewById(R.id.recyclerView2); + storage = FirebaseStorage.getInstance(); + storageReference = storage.getReference(); + submitButton = findViewById(R.id.submitButton); + uploadImageButton = findViewById(R.id.uploadImageButton); setupForm(); } @@ -157,6 +179,10 @@ private void setupForm() { // populate formBuilder with items formBuilder.addFormElements(formItems); + uploadImageButton.setOnClickListener(view -> { + chooseImage(); + }); + // onSubmit submitButton.setOnClickListener(view -> { @@ -231,4 +257,44 @@ private String getSwitchBool(FormElementSwitch switchElement) { return "false"; } + private void chooseImage() { + Intent intent = new Intent(); + intent.setType("image/*"); + intent.setAction(Intent.ACTION_GET_CONTENT); + startActivityForResult(intent, 1); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) { + // we got the image :D + + System.out.println("GOT THE IMAGE !!!"); + imageUri = data.getData(); + uploadPicture(); + } + } + + private void uploadPicture() { + final String randomKey = UUID.randomUUID().toString(); + StorageReference storageRef = storageReference.child("images/" + randomKey); + storageRef.putFile(imageUri) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { + System.out.println("SUCCESSS!!!"); + Task downloadUri = taskSnapshot.getStorage().getDownloadUrl(); + System.out.println("downloadUri: " + downloadUri); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + System.out.println("FAILEDDD"); + } + }); + } + + } diff --git a/app/src/main/res/layout/activity_sample_fordm.xml b/app/src/main/res/layout/activity_sample_fordm.xml index 7b0f1ef..5bc7f25 100644 --- a/app/src/main/res/layout/activity_sample_fordm.xml +++ b/app/src/main/res/layout/activity_sample_fordm.xml @@ -8,23 +8,30 @@ + android:layout_width="413dp" + android:layout_height="633dp" + app:layout_constraintTop_toTopOf="parent" + tools:layout_editor_absoluteX="0dp" />