how to upload image to firebase in android studio

 how to upload image to firebase in android studio 2021

Dependency

//firebase 
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation 'com.google.firebase:firebase-database:19.2.1'
implementation 'com.google.firebase:firebase-storage'
implementation platform('com.google.firebase:firebase-bom:26.3.0')
implementation 'com.google.firebase:firebase-database-ktx'

//picasso
implementation 'com.squareup.picasso:picasso:2.5.2'

User-Permissions

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Xml Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Selected Image"
android:gravity="center"
android:textColor="@color/black"
android:textSize="20sp" />

<ImageView
android:id="@+id/my_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_centerInParent="true"
android:layout_marginBottom="20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher_foreground" />
<LinearLayout
android:id="@+id/my_linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/my_image"
android:gravity="center">
<android.widget.Button
android:layout_width="150dp"
android:layout_height="45dp"
android:text="Gallary"
android:textColor="@color/white"
android:background="@color/black"
android:layout_margin="5dp"
android:onClick="openGallary"/>
<android.widget.Button
android:layout_width="150dp"
android:layout_height="45dp"
android:text="Camera"
android:textColor="@color/white"
android:background="@color/black"
android:layout_margin="5dp"
android:onClick="openCamera"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Image From Database"
android:gravity="center"
android:layout_marginTop="50dp"
android:layout_below="@id/my_linear"
android:textColor="@color/black"
android:textSize="20sp"/>

<ImageView
android:id="@+id/image_from_database"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/my_linear"
android:layout_marginStart="20dp"
android:layout_marginTop="80dp"
android:layout_marginEnd="20dp"
android:layout_centerInParent="true"
android:layout_marginBottom="20dp"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher_foreground" />


</RelativeLayout>

Code

package com.example.imagetodatabase;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
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.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;

import java.util.HashMap;

public class MainActivity extends AppCompatActivity {

private int CAMERA_PIC_REQUEST=100;
private int GALLARY_PIC_REQUEST=200;
Uri imageUri;
ImageView imageFromGallary,imageFromDatabase=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageFromGallary=findViewById(R.id.my_image);
imageFromDatabase=findViewById(R.id.image_from_database);

retrieveData();
}

private void retrieveData() {
DatabaseReference db=FirebaseDatabase.getInstance().getReference("riddle_game")
.child("myImages").child("user1").child("newImage");
db.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()){
Picasso.with(MainActivity.this).load(Uri.parse(snapshot.getValue().toString())).into(imageFromDatabase);
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
}

public void openGallary(View view) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, GALLARY_PIC_REQUEST);
}

public void openCamera(View view) {

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==CAMERA_PIC_REQUEST&&resultCode==RESULT_OK){

}
if(requestCode==GALLARY_PIC_REQUEST&&resultCode==RESULT_OK){
imageUri=data.getData();
Picasso.with(MainActivity.this).load(imageUri).into(imageFromGallary);
setToFireStorage(imageUri);
}
}

private void setToFireStorage(Uri imageUri) {

StorageReference storageReference= FirebaseStorage.getInstance().getReference().child("ImageFolder");
final StorageReference ImageReference=storageReference.child("112233");
ImageReference.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ImageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
DatabaseReference db= FirebaseDatabase.getInstance().getReference("riddle_game").child("myImages")
.child("user1");
db.child("newImage").setValue(uri.toString());
Toast.makeText(MainActivity.this, "Successfully added to real time", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});

}
}

Comments