package
com.geeksforgeeks.uploadimagetofirebase;
import
android.app.ProgressDialog;
import
android.content.Intent;
import
android.graphics.Bitmap;
import
android.graphics.Color;
import
android.graphics.drawable.ColorDrawable;
import
android.net.Uri;
import
android.provider.MediaStore;
import
android.support.annotation.Nullable;
import
android.support.v7.app.ActionBar;
import
android.support.v7.app.AppCompatActivity;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.ImageView;
import
android.widget.Toast;
import
java.io.IOException;
import
java.util.UUID;
public
class
MainActivity
extends
AppCompatActivity {
private
Button btnSelect, btnUpload;
private
ImageView imageView;
private
Uri filePath;
private
final
int
PICK_IMAGE_REQUEST =
22
;
FirebaseStorage storage;
StorageReference storageReference;
@Override
protected
void
onCreate(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar;
actionBar = getSupportActionBar();
ColorDrawable colorDrawable
=
new
ColorDrawable(
Color.parseColor(
"#0F9D58"
));
actionBar.setBackgroundDrawable(colorDrawable);
btnSelect = findViewById(R.id.btnChoose);
btnUpload = findViewById(R.id.btnUpload);
imageView = findViewById(R.id.imgView);
storage = FirebaseStorage.getInstance();
storageReference = storage.getReference();
btnSelect.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v)
{
SelectImage();
}
});
btnUpload.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v)
{
uploadImage();
}
});
}
private
void
SelectImage()
{
Intent intent =
new
Intent();
intent.setType(
"image/*"
);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(
intent,
"Select Image from here..."
),
PICK_IMAGE_REQUEST);
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
Intent data)
{
super
.onActivityResult(requestCode,
resultCode,
data);
if
(requestCode == PICK_IMAGE_REQUEST
&& resultCode == RESULT_OK
&& data !=
null
&& data.getData() !=
null
) {
filePath = data.getData();
try
{
Bitmap bitmap = MediaStore
.Images
.Media
.getBitmap(
getContentResolver(),
filePath);
imageView.setImageBitmap(bitmap);
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
private
void
uploadImage()
{
if
(filePath !=
null
) {
ProgressDialog progressDialog
=
new
ProgressDialog(
this
);
progressDialog.setTitle(
"Uploading..."
);
progressDialog.show();
StorageReference ref
= storageReference
.child(
"images/"
+ UUID.randomUUID().toString());
ref.putFile(filePath)
.addOnSuccessListener(
new
OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public
void
onSuccess(
UploadTask.TaskSnapshot taskSnapshot)
{
progressDialog.dismiss();
Toast
.makeText(MainActivity.
this
,
"Image Uploaded!!"
,
Toast.LENGTH_SHORT)
.show();
}
})
.addOnFailureListener(
new
OnFailureListener() {
@Override
public
void
onFailure(
@NonNull
Exception e)
{
progressDialog.dismiss();
Toast
.makeText(MainActivity.
this
,
"Failed "
+ e.getMessage(),
Toast.LENGTH_SHORT)
.show();
}
})
.addOnProgressListener(
new
OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public
void
onProgress(
UploadTask.TaskSnapshot taskSnapshot)
{
double
progress
= (
100.0
* taskSnapshot.getBytesTransferred()
/ taskSnapshot.getTotalByteCount());
progressDialog.setMessage(
"Uploaded "
+ (
int
)progress +
"%"
);
}
});
}
}
}