UPdate and Featch Image in Realbase Datatype

  

UPdate and Featch Image in Realbase Database

 

Xml code:-

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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"
    
android:orientation="vertical"
    
tools:context=".profile">

    <
ImageView
        
android:id="@+id/uimage"
        
android:layout_width="200dp"
        
android:layout_height="200dp"
        
android:layout_gravity="center"
        
android:layout_marginTop="100dp"
        
android:src="@drawable/ic_launcher_background"/>


    <
EditText
        
android:layout_width="300dp"
        
android:layout_height="wrap_content"
        
android:id="@+id/uname"
        
android:textSize="20sp"
        
android:layout_gravity="center"
        
android:layout_marginTop="20dp"
        
android:hint="Update Your Name"/>

    <
Button
        
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
        
android:text="Update Info"
        
android:id="@+id/btnupdate"
        
android:layout_gravity="center"
        
android:textSize="25sp"
        
android:layout_marginTop="20sp"
        
android:padding="12dp"/>

</
androidx.appcompat.widget.LinearLayoutCompat>

 

 

Java Codes:-

 

 

package com.niranjan.youtuberegisterlogin;

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

import android.Manifest;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class profile extends AppCompatActivity {
    ImageView 
uimage;
    EditText 
uname;
    Button 
btnupdate;

    DatabaseReference 
dbreference;
    StorageReference 
storageReference;

    Uri 
filepath;
    Bitmap 
bitmap;
    String 
UserID="";

    
@Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_profile);
        
uimage=(ImageView)findViewById(R.id.uimage);
        
uname=(EditText) findViewById(R.id.uname);
        
btnupdate=(Button)findViewById(R.id.btnupdate);

        FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
        
UserID=user.getUid();

        
dbreference= FirebaseDatabase.getInstance().getReference().child("userprofile");
        
storageReference= FirebaseStorage.getInstance().getReference();

        
uimage.setOnClickListener(new View.OnClickListener() {
            
@Override
            
public void onClick(View view) {

                Dexter.withContext(getApplicationContext())
                        .withPermission(Manifest.permission.
READ_EXTERNAL_STORAGE)
                        .withListener(
new PermissionListener() {
                            
@Override
                            
public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
                                Intent intent=
new Intent();
                                intent.setType(
"image/*");
                                intent.setAction(Intent.
ACTION_GET_CONTENT);
                                startActivityForResult(Intent.createChooser(intent,
"Please Select File"),101);
                            }

                            
@Override
                            
public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {

                            }

                            
@Override
                            
public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {
                                permissionToken.continuePermissionRequest();
                            }
                        }).check();

            }
        });

        
btnupdate.setOnClickListener(new View.OnClickListener() {
            
@Override
            
public void onClick(View view) {
                updatetofirebase();
            }
        });
    }

    
@Override
    
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        
super.onActivityResult(requestCode, resultCode, data);
        
if(requestCode==101 && resultCode==RESULT_OK)
        {
            
filepath=data.getData();
            
try {
                InputStream inputStream=getContentResolver().openInputStream(
filepath);
                
bitmap= BitmapFactory.decodeStream(inputStream);
                
uimage.setImageBitmap(bitmap);
            }
catch (Exception ex)
            {
                Toast.makeText(getApplicationContext(),ex.getMessage(),Toast.
LENGTH_LONG).show();
            }
        }
    }


    
public void updatetofirebase()
    {
        
final ProgressDialog pd=new ProgressDialog(this);
        pd.setTitle(
"File Uploader");
        pd.show();

        
final StorageReference uploader=storageReference.child("profileimages/"+"img"+System.currentTimeMillis());
        uploader.putFile(
filepath)
                .addOnSuccessListener(
new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    
@Override
                    
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        
uploader.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            
@Override
                            
public void onSuccess(Uri uri) {
                                
final Map<String,Object> map=new HashMap<>();
                                map.put(
"uimage",uri.toString());
                                map.put(
"uname",uname.getText().toString());

                                
dbreference.child(UserID).addValueEventListener(new ValueEventListener() {
                                    
@Override
                                    
public void onDataChange(@NonNull DataSnapshot snapshot) {
                                        
if(snapshot.exists())
                                            
dbreference.child(UserID).updateChildren(map);
                                        
else
                                            
dbreference.child(UserID).setValue(map);
                                    }
                                    
@Override
                                    
public void onCancelled(@NonNull DatabaseError error) {
                                    }
                                });

                                
pd.dismiss();
                                Toast.makeText(getApplicationContext(),
"Updated Successfully",Toast.LENGTH_LONG).show();
                            }
                        });
                    }
                })
                .addOnProgressListener(
new OnProgressListener<UploadTask.TaskSnapshot>() {
                    
@Override
                    
public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
                        
float percent=(100*snapshot.getBytesTransferred())/snapshot.getTotalByteCount();
                        
pd.setMessage("Uploaded :"+(int)percent+"%");
                    }
                });

    }

    
@Override
    
protected void onStart() {
        
super.onStart();

        FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
        
UserID=user.getUid();
        
dbreference.child(UserID).addValueEventListener(new ValueEventListener() {
            
@Override
            
public void onDataChange(@NonNull DataSnapshot snapshot) {
                
if(snapshot.exists()) {
                    
uname.setText(snapshot.child("uname").getValue().toString());
                    Glide.with(getApplicationContext()).load(snapshot.child(
"uimage").getValue().toString()).into(uimage);
                }
            }

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

            }
        });
    }
}

 

 

 

Single Image Upload in firebase with uri

 

Xml:-

<LinearLayout 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"
    
android:orientation="vertical"
    
tools:context=".MainActivity">

<
ImageView
    
android:background="@drawable/ic_launcher_background"
    
android:layout_width="200dp"
    
android:layout_height="200dp"
 
android:layout_gravity="center"
 
android:id="@+id/pickimage"/>

<
Button
    
android:layout_width="wrap_content"
    
android:layout_height="wrap_content"
 
android:text="Upload"
android:layout_gravity="center"
 
android:id="@+id/upload"/>
</
LinearLayout>

 

 

Java Code:-

 

package com.niranjan.fireapp;

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.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.google.android.gms.tasks.OnSuccessListener;
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 java.util.Map;

public class MainActivity extends AppCompatActivity {
ImageView 
imageView;
Uri 
uri;
    
@Override
    
protected void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);

        
imageView= findViewById(R.id.pickimage);
        FirebaseStorage storage = FirebaseStorage.getInstance();
        StorageReference reference=storage.getReference();


        
imageView.setOnClickListener(new View.OnClickListener() {
            
@Override
            
public void onClick(View v) {
                Intent intent = 
new Intent();
                intent.setType(
"image/*");
                intent.setAction(Intent.
ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, 
"Select Picture"), 174);
            }
        });
        findViewById(R.id.
upload).setOnClickListener(new View.OnClickListener() {
            
@Override
            
public void onClick(View v) {
                
if (uri!=null){
StorageReference demoRef =
reference.child("demo.jpg");
demoRef.putFile(
uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    
@Override
    
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

        Toast.makeText(MainActivity.
this"uploaded", Toast.LENGTH_SHORT).show();

        
demoRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            
@Override
            
public void onSuccess(Uri Downloduri) {
                FirebaseDatabase database =FirebaseDatabase.getInstance();
                DatabaseReference mref = database.getReference(
"ImageUrl");
                mref.setValue(Downloduri.toString());
            }
        });
    }
});
                }
            }
        });



    }

    
@Override
    
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        
super.onActivityResult(requestCode, resultCode, data);
        
if (requestCode == 174 && resultCode==RESULT_OK){
            
uri=data.getData();
            
if (uri!=null){
                Glide.with(MainActivity.
this).load(uri).into(imageView);

            }
        }
    }
}

 

Comments

Popular posts from this blog

Gride View in Firebase

Register in kotlin

Check Permission in Android Studio