¿Cómo guardar datos en la base de datos en tiempo real de Firebase en Android?

Firebase es una de las famosas plataformas de back-end que utilizan muchos desarrolladores para brindar soporte de back-end a sus aplicaciones y sitios web. Es el producto de Google que brinda servicios como base de datos, almacenamiento, autenticación de usuarios y muchos más. En este artículo, crearemos una aplicación simple en la que agregaremos nuestros datos a Firebase Realtime Database.

¿Qué es la base de datos en tiempo real de Firebase? 

Firebase Realtime Database es una base de datos en la nube NoSQL que se utiliza para almacenar y sincronizar los datos. Los datos de la base de datos se pueden sincronizar a la vez en todos los clientes, como Android, web e IOS. Los datos en la base de datos se almacenan en formato JSON y se actualizan en tiempo real con cada cliente conectado.  

¿Cuáles son las ventajas de usar Firebase Realtime Database? 

  • La principal ventaja de usar la base de datos Firebase Realtime es que los datos se actualizan en tiempo real y no es necesario realizar ninguna solicitud de actualización o cambio de datos. La base de datos utiliza la sincronización de datos cada vez que los datos cambian y estos cambios reflejarán al usuario conectado en milisegundos.
  • Mientras usa Firebase Realtime Database, sus aplicaciones siguen respondiendo incluso si el dispositivo pierde su conectividad con la base de datos. Una vez que el usuario haya establecido la conexión, recibirá los cambios realizados en los datos de la base de datos.
  • Se puede acceder fácilmente a los datos almacenados en la base de datos de Firebase a través del portal web de Firebase. Puede administrar su base de datos desde PC y dispositivos móviles. Puede administrar las reglas de la base de datos que otorgan permisos para leer y escribir operaciones en la base de datos.

¿Qué vamos a construir en este artículo?

En este artículo, vamos a crear una aplicación simple en la que obtendremos los datos de los usuarios con la ayuda de algunos TextFields y almacenaremos esos datos en Firebase Realtime Database . Tenga en cuenta que estamos usando Firebase Realtime Database y que la aplicación está escrita en lenguaje JAVA

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: conecta tu aplicación a Firebase

Después de crear un nuevo proyecto, vaya a la opción Herramientas en la barra superior. Dentro de eso, haga clic en Firebase . Después de hacer clic en Firebase, puede ver la columna de la derecha que se menciona a continuación en la captura de pantalla.

Dentro de esa columna, navegue hasta Firebase Realtime Database . Haga clic en esa opción y verá dos opciones en Conectar la aplicación a Firebase y Agregar Firebase Realtime Database a su aplicación . Haga clic en Conectar ahora y su aplicación se conectará a Firebase. Después de eso, haga clic en la segunda opción y ahora su aplicación está conectada a Firebase. 

Después de conectar su aplicación a Firebase, verá la siguiente pantalla. 

Después de eso, verifique que la dependencia de la base de datos Firebase Realtime se haya agregado a nuestro archivo Gradle. Ahora navegue a la aplicación> Gradle Scripts y dentro de ese archivo verifique si la dependencia a continuación se agrega o no. Si la dependencia a continuación no se agrega en su archivo build.gradle . Agregue la siguiente dependencia en la sección de dependencias.

implementación ‘com.google.firebase:firebase-database:19.6.0’

Después de agregar esta dependencia, sincronice su proyecto y ahora estamos listos para crear nuestra aplicación. Si desea obtener más información sobre cómo conectar su aplicación a Firebase. Consulte este artículo para obtener detalles sobre cómo agregar Firebase a la aplicación de Android. 

Paso 3: trabajar con el archivo AndroidManifest.xml

Para agregar datos a Firebase, deberíamos otorgar permisos para acceder a Internet. Para agregar estos permisos, navegue a la aplicación> AndroidManifest.xml y dentro de ese archivo agregue los permisos a continuación. 

XML

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

Paso 4: trabajar con el archivo activity_main.xml

Vaya al archivo activity_main.xml y consulte el siguiente código. A continuación se muestra el código para el archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <!--EditText for adding employee name-->
    <EditText
        android:id="@+id/idEdtEmployeeName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:hint="Enter Employee Name"
        android:importantForAutofill="no"
        android:inputType="textPersonName" />
  
    <!--EditText for adding employee phone-->
    <EditText
        android:id="@+id/idEdtEmployeePhoneNumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmployeeName"
        android:layout_margin="10dp"
        android:hint="Enter employee phone number"
        android:importantForAutofill="no"
        android:inputType="phone" />
  
    <!--EditText for adding employee address-->
    <EditText
        android:id="@+id/idEdtEmployeeAddress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmployeePhoneNumber"
        android:layout_margin="10dp"
        android:hint="Enter employee address"
        android:inputType="textPostalAddress" />
  
    <!--Button for adding data to Firebase-->
    <Button
        android:id="@+id/idBtnSendData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdtEmployeeAddress"
        android:layout_margin="10dp"
        android:text="Add employee details"
        android:textAllCaps="false" />
  
</RelativeLayout>

Paso 5: Cree una nueva clase de Java para almacenar nuestros datos

Para enviar varios datos a la base de datos en tiempo real de Firebase, debemos crear una clase de objeto y enviar esa clase de objeto completa a Firebase. Para crear una clase de objeto, vaya a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en él y haga clic en Nuevo > Clase Java > Asigne un nombre a su clase . En mi caso, es EmployeeInfo y le agrego el siguiente código. 

Java

public class EmployeeInfo {
      
    // string variable for 
    // storing employee name.
    private String employeeName;
      
    // string variable for storing
    // employee contact number
    private String employeeContactNumber;
      
    // string variable for storing
    // employee address.
    private String employeeAddress;
  
    // an empty constructor is 
    // required when using
    // Firebase Realtime Database.
    public EmployeeInfo() {
  
    }
  
    // created getter and setter methods
    // for all our variables.
    public String getEmployeeName() {
        return employeeName;
    }
  
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
  
    public String getEmployeeContactNumber() {
        return employeeContactNumber;
    }
  
    public void setEmployeeContactNumber(String employeeContactNumber) {
        this.employeeContactNumber = employeeContactNumber;
    }
  
    public String getEmployeeAddress() {
        return employeeAddress;
    }
  
    public void setEmployeeAddress(String employeeAddress) {
        this.employeeAddress = employeeAddress;
    }
}

Paso 6: trabajar con el archivo MainActivity.java

Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
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;
  
public class MainActivity extends AppCompatActivity {
  
    // creating variables for 
    // EditText and buttons.
    private EditText employeeNameEdt, employeePhoneEdt, employeeAddressEdt;
    private Button sendDatabtn;
      
    // creating a variable for our
    // Firebase Database.
    FirebaseDatabase firebaseDatabase;
      
    // creating a variable for our Database 
    // Reference for Firebase.
    DatabaseReference databaseReference;
      
    // creating a variable for 
    // our object class
    EmployeeInfo employeeInfo;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initializing our edittext and button
        employeeNameEdt = findViewById(R.id.idEdtEmployeeName);
        employeePhoneEdt = findViewById(R.id.idEdtEmployeePhoneNumber);
        employeeAddressEdt = findViewById(R.id.idEdtEmployeeAddress);
          
        // below line is used to get the 
        // instance of our FIrebase database.
        firebaseDatabase = FirebaseDatabase.getInstance();
          
        // below line is used to get reference for our database.
        databaseReference = firebaseDatabase.getReference("EmployeeInfo");
          
        // initializing our object 
        // class variable.
        employeeInfo = new EmployeeInfo();
  
        sendDatabtn = findViewById(R.id.idBtnSendData);
          
        // adding on click listener for our button.
        sendDatabtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // getting text from our edittext fields.
                String name = employeeNameEdt.getText().toString();
                String phone = employeePhoneEdt.getText().toString();
                String address = employeeAddressEdt.getText().toString();
                  
                // below line is for checking weather the 
                // edittext fields are empty or not.
                if (TextUtils.isEmpty(name) && TextUtils.isEmpty(phone) && TextUtils.isEmpty(address)) {
                    // if the text fields are empty 
                    // then show the below message.
                    Toast.makeText(MainActivity.this, "Please add some data.", Toast.LENGTH_SHORT).show();
                } else {
                    // else call the method to add 
                    // data to our database.
                    addDatatoFirebase(name, phone, address);
                }
            }
        });
    }
  
    private void addDatatoFirebase(String name, String phone, String address) {
        // below 3 lines of code is used to set
        // data in our object class.
        employeeInfo.setEmployeeName(name);
        employeeInfo.setEmployeeContactNumber(phone);
        employeeInfo.setEmployeeAddress(address);
          
        // we are use add value event listener method
        // which is called with database reference.
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                // inside the method of on Data change we are setting 
                // our object class to our database reference.
                // data base reference will sends data to firebase.
                databaseReference.setValue(employeeInfo);
                  
                // after adding this data we are showing toast message.
                Toast.makeText(MainActivity.this, "data added", Toast.LENGTH_SHORT).show();
            }
  
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // if the data is not added or it is cancelled then
                // we are displaying a failure toast message.
                Toast.makeText(MainActivity.this, "Fail to add data " + error, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Después de agregar este código, vaya a este enlace para Firebase. Después de hacer clic en este enlace, verá la página a continuación y en esta página, haga clic en la opción Ir a la consola en la esquina superior derecha. 

Después de hacer clic en esta pantalla, verá la pantalla a continuación con todo su proyecto dentro que selecciona su proyecto. 

Dentro de esa pantalla, haga clic en n Base de datos en tiempo real en la ventana izquierda. 

Después de hacer clic en esta opción, verá la pantalla en el lado derecho. En esta página, haga clic en la opción Reglas que se encuentra en la barra superior. Verá la siguiente pantalla. 

Dentro de esta pantalla, haga clic en la pestaña Reglas, verá la pantalla anterior y cambie las reglas a verdaderas como se muestra en la captura de pantalla. Las reglas se cambian a verdaderas porque no proporcionamos autenticación dentro de nuestra aplicación y tenemos que escribir datos en nuestra base de datos. Es por eso que estamos especificando que sea verdadero. Después de cambiar sus reglas, haga clic en el botón publicar reglas. Haga clic en esa opción y se publicarán sus reglas. Ahora regrese a la pestaña Datos de su base de datos.

Producción:

A continuación se muestra el video de nuestra aplicación para agregar datos a Firebase Realtime Database. 

Ejecute la aplicación y asegúrese de conectar su dispositivo a Internet. Después de eso, agregue algunos datos en sus campos de texto y haga clic en el botón Insertar datos. Los datos se agregarán a nuestra base de datos de Firebase. A continuación se muestra la captura de pantalla que veremos después de agregar datos a la base de datos de Firebase desde la aplicación.

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *