From ead41e5b9147e76311bfee572fe70a03f79c891d Mon Sep 17 00:00:00 2001 From: kishoreraju2 <kishoreraju.1998@gmail.com> Date: Fri, 21 Apr 2017 14:43:12 +0530 Subject: [PATCH] Upload Images to firebase --- app/build.gradle | 2 + .../com/mapps/seproject/ComposeFragment.java | 85 ++++++++++++++++++- app/src/main/res/layout/fragment_compose.xml | 17 +++- 3 files changed, 99 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5742fe4..2803c2f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,9 +32,11 @@ dependencies { compile 'com.roughike:bottom-bar:2.0.2' compile 'com.android.volley:volley:1.0.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.google.firebase:firebase-storage:10.2.0' testCompile 'junit:junit:4.12' } + apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/src/main/java/com/mapps/seproject/ComposeFragment.java b/app/src/main/java/com/mapps/seproject/ComposeFragment.java index 0f8be58..39fe20c 100644 --- a/app/src/main/java/com/mapps/seproject/ComposeFragment.java +++ b/app/src/main/java/com/mapps/seproject/ComposeFragment.java @@ -2,11 +2,14 @@ package com.mapps.seproject; import android.app.AlertDialog; import android.app.Fragment; +import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; +import android.support.annotation.NonNull; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -18,6 +21,15 @@ import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; +import com.google.android.gms.tasks.OnFailureListener; +import com.google.android.gms.tasks.OnSuccessListener; +import com.google.firebase.storage.FirebaseStorage; +import com.google.firebase.storage.OnProgressListener; +import com.google.firebase.storage.StorageReference; +import com.google.firebase.storage.UploadTask; + +import java.io.IOException; + import static android.app.Activity.RESULT_OK; /** @@ -31,9 +43,13 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ Spinner dropdown; TextView emailText; + private StorageReference mStorageRef; + + Button bAddImage; View view; - Uri imageUri; + private Uri imageUri; + Button upload; private static int RESULT_LOAD_IMAGE = 1; private static int RESULT_MAIL = 2; @@ -59,10 +75,14 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ emailText = (TextView) view.findViewById(R.id.tvEmailMessage); bAddImage = (Button) view.findViewById(R.id.bAddImage); b_get = (Button) view.findViewById(R.id.button2); + upload = (Button) view.findViewById(R.id.upload_image); + + mStorageRef = FirebaseStorage.getInstance().getReference(); bAddImage.setOnClickListener(this); bComposeMail.setOnClickListener(this); b_get.setOnClickListener(this); + upload.setOnClickListener(this); return view; } @@ -148,6 +168,11 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ } + //Upload Image + if(v == upload){ + uploadFile(); + } + //Location if(v == b_get){ gps = new TrackGPS(getActivity()); @@ -174,6 +199,11 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ } + + + + + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -190,6 +220,59 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{ } + + //Upload image + private void uploadFile() { + //if there is a file to upload + if (imageUri != null) { + //displaying a progress dialog while upload is going on + final ProgressDialog progressDialog = new ProgressDialog(getActivity()); + progressDialog.setTitle("Uploading"); + progressDialog.show(); + + StorageReference riversRef = mStorageRef.child("images/pic.jpg"); + riversRef.putFile(imageUri) + .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { + @Override + public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { + //if the upload is successfull + //hiding the progress dialog + progressDialog.dismiss(); + + //and displaying a success toast + Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show(); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception exception) { + //if the upload is not successfull + //hiding the progress dialog + progressDialog.dismiss(); + + //and displaying error message + Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show(); + } + }) + .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { + @SuppressWarnings("VisibleForTests") + @Override + public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { + //calculating progress percentage + + double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount(); + + //displaying percentage in progress dialog + progressDialog.setMessage("Uploaded " + ((int) progress) + "%..."); + } + }); + } + //if there is not any file + else { + //you can display an error toast + } + } + @Override public void onActivityCreated(Bundle savedInstanceState) { diff --git a/app/src/main/res/layout/fragment_compose.xml b/app/src/main/res/layout/fragment_compose.xml index 021a446..c3a3609 100644 --- a/app/src/main/res/layout/fragment_compose.xml +++ b/app/src/main/res/layout/fragment_compose.xml @@ -28,10 +28,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/bComposeMail" + android:layout_marginBottom="28dp" android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" - android:layout_marginBottom="16dp" - android:layout_alignParentEnd="true" /> + android:layout_alignParentStart="true" /> <Button android:text="Add Image" @@ -39,7 +38,8 @@ android:layout_height="wrap_content" android:id="@+id/bAddImage" android:layout_above="@+id/bComposeMail" - android:layout_alignParentStart="true" /> + android:layout_alignParentStart="true" + android:layout_marginBottom="12dp" /> <EditText android:layout_width="match_parent" @@ -61,6 +61,15 @@ android:layout_centerHorizontal="true" android:text="Get Location" /> + <Button + android:id="@+id/upload_image" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Upload Image" + android:layout_alignBaseline="@+id/bComposeMail" + android:layout_alignBottom="@+id/bComposeMail" + android:layout_toEndOf="@+id/button2" /> + </RelativeLayout> </FrameLayout> -- GitLab