Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Firebase / Leer datos de Firebase desde Android

Leer datos de Firebase desde Android

Autor jc mouse viernes, febrero 2, 2018

En este post crearemos una aplicación en Android Studio para conectarnos con nuestra base de datos de Firebase y leer algunos datos. Para seguir este post es necesario que primero hayas leído un post anterior “Introducción a Firebase” ya que partiremos desde ese ejemplo y daremos por echo de que sabes moverte por la consola de Firebase.

A tener en cuenta:

1.- En nuestro proyecto en Firebase, establecimos que la lectura de datos no requiere de autenticación de usuarios por lo que no necesitamos loguearnos desde nuestra aplicación android. En post futuros donde implementaremos la escritura, actualización y borrado de datos, deberemos primero crear nuestro sistema de autenticación si queremos realizar aquellas operaciones.

2.- Si bien podemos leer datos de Firebase directamente ya que estos son solo texto (*.JSON), google nos ofrece librerías que nos facilitaran el trabajo tanto en el acceso a los mismos como en el parseado a clases java.

Paso 1: Proyecto en Android Studio

En Android Studio crea un nuevo proyecto con las siguientes características:

  • Nombre del Proyecto: Leer datos – Firebase
  • Paquete: org.example.leerdatos_firebase
  • Plantilla: Empty Activity
  • Activity Name: MainActivity
  • Layout Name: activity_main
  • Permisos: Acceso a internet: <uses-permission android:name=”android.permission.INTERNET”/>
  • Dependencias: Si, las implementaremos más adelante
  • SDK mínimo: Api 16: Android 4.1

Paso 2: Agregar proyecto Android a Firebase

Logueate en Firebase e ingresa a tu consola de proyectos, para nuestro ejemplo “Proyecto Valkirya“. Veras que tienes 3 opciones para trabajar; con iOS, Android y aplicaciones Web, selecciona la opción “Añade Firebase a tu aplicación en Android

android_fire-base

En la ventana que aparece tenemos tres pasos para completar:

P1.- Registrar la aplicación:

Para registrar tu aplicación android, debes escribir el nombre del paquete de tu app, en este ejemplo es “org.example.leerdatos_firebase“, podemos definir un “apodo” para  la aplicación, es opcional así que lo dejamos en blanco, finalmente debemos ingresar un Certificado SHA-1, si bien también es opcional, este es necesario si queremos trabajar con Dynamic Links, asistencia por teléfono e inicio de sesión de Google Auth, por lo que es necesario saber como se crea este certificado.

SHA-1

Certificado de firma de depuración SHA-1

Para crear este certificado, abrimos la consola (terminal) de Android Studio y escribimos lo siguiente

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore

presionamos ENTER, entonces nos pedira que ingresemos la contraseña del almacén de claves, por defecto es “android“, escribelo y presiona ENTER.

De todos los datos que te salen, busca el que empieza con SHA1, copialo y pega en el formulario de Firebase.

Para terminar con el paso 1, presiona “Registrar la Aplicación

Si quieres leer más sobre estos certificados, lee la documentación de desarrolladores de Firebase  (en ingles)

P2.- Descargar el Archivo de configuración

paso 2 des pa cito

Este archivo google-services.json contiene información importante de tu cuenta Firebase y tu app android, así que no lo muestres a nadie 🙂

Debes descargarlo y pegarlo en el root de tu aplicación tal como se indica en las instrucciones, es decir:

windows realtime

Finalmente pasamos al paso 3, presionamos “continuar

P3: Añadir el SDK de Firebase

Este tercer paso consiste en realizar algunas modificaciones en la configuración de tu proyecto, firebase te muestra lo que debes agregar paso a paso, así que manos a la obra.

Abrimos el archivo build.gradle del proyecto y agregamos:

      classpath ‘com.google.gms:google-services:3.1.0’

dependencias de google

Al realizar la modificación, te pedirá que sincronices la app, no lo haga todavía.

Abre el archivo build.gradle (Module: App) y agregamos:

plugin y dependencias

recién ahora presionamos Sync Now y esperamos unos segundos a que Android Studio termine su trabajo.

Paso 3: Los Datos de Firebase

En un post anterior [Hola Mundo con Firebase] ingresamos unos datos triviales a nuestra base de datos, si bien podemos trabajar con ellos sin ningún problema, utilizaremos mejor un objeto JSON llamado “Estudiante“que nos muestre mejor el parseado de objetos JSON a  java. En tu consola de Firebase introduce lo siguiente:

objeto JSON Estudiante

Importante son las claves, debes escribirlas tal cual están, el contenido puede ser cualquier otro que desees.

Paso 4: Clase java ‘Estudiante’

En nuestro proyecto android debemos crear también una clase “Estudiante“, para ello, agrega un nuevo paquete “modelo” al proyecto y añade una clase:

modelo proyecto

El código de la clase “Estudiante.java” es:

package org.example.leerdatos_firebase.modelo;

public class Estudiante{

    private String id;
    private String nombre_completo;
    private int edad;
    private String beca;
    private float mesada;

    public Estudiante(){}

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNombre_completo() {
        return nombre_completo;
    }

    public void setNombre_completo(String nombre_completo) {
        this.nombre_completo = nombre_completo;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getBeca() {
        return beca;
    }

    public void setBeca(String beca) {
        this.beca = beca;
    }

    public float getMesada() {
        return mesada;
    }

    public void setMesada(float mesada) {
        this.mesada = mesada;
    }

    @Override
    public String toString() {
        return "Estudiante: \n" +
                "  id=" + id + "\n" +
                "  nombre_completo=" + nombre_completo + "\n" +
                "  edad=" + edad + "\n" +
                "  beca=" + beca + "\n" +
                "  mesada=" + mesada + "\n";
    }
}

Paso 5: Base de datos en tiempo real

Se le llama Base de datos en tiempo real o Realtime Database porque gracias a la tecnología de Google, los cambios que se realicen en la base de datos se sincronizan con las app que estén conectadas en ese momento y estos reciben la actualización en milisegundos.

El layout de nuestra app consiste en un TextView donde mostrar los datos:

<?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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="org.example.leerdatos_firebase.MainActivity">

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

Finalmente abrimos nuestro MainActivity y reemplazaremos el código por:

package org.example.leerdatos_firebase;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
//import de google firebase
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.GenericTypeIndicator;
import com.google.firebase.database.ValueEventListener;
//nuestra clase estudiante
import org.example.leerdatos_firebase.modelo.Estudiante;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView textview = (TextView)findViewById(R.id.textview);

        //Instancia a la base de datos
        FirebaseDatabase fdb = FirebaseDatabase.getInstance();
        //apuntamos al nodo que queremos leer
        DatabaseReference myRef = fdb.getReference("Estudiante");

        //Agregamos un ValueEventListener para que los cambios que se hagan en la base de datos
        //se reflejen en la aplicacion
        myRef.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot){

                //leeremos un objeto de tipo Estudiante
                GenericTypeIndicator<Estudiante> t = new GenericTypeIndicator<Estudiante>() {};
                Estudiante estudiante = dataSnapshot.getValue(t);

                //formamos el resultado en un string
                String resultado = "Como objeto java:\n\n";
                resultado += estudiante + "\n";
                resultado += "Propiedad Estudiante:\nNombre completo: " +estudiante.getNombre_completo();

                //Tambien podemos leer los datos como un string
                resultado += "\n\n-----------------------------\n\n";
                resultado += "Como JSON:\n\n";
                resultado += dataSnapshot.getValue().toString();

                resultado += "\n\nHijo de Estudiante -> nombre_completo\n";

                resultado += dataSnapshot.child("nombre_completo").toString()+  "\n";

                //leemos un nodo hijo del nodo estudiante
                resultado += "\n Key: " + dataSnapshot.child("nombre_completo").getKey()+"\n";
                resultado += "\n Valor: " + dataSnapshot.child("nombre_completo").getValue(String.class);

                //mostramos en el textview
                textview.setText(resultado);
            }
            @Override
            public void onCancelled(DatabaseError error){
                Log.e("ERROR FIREBASE",error.getMessage());
            }

        });

    }//onCreate:end

}

Ejecutamos y tenemos:

app database realtime

Ahora con tu app aun en ejecución, dirígete a tu consola de Firebase y cambia los valores del objeto Estudiante, podrás observar como estos también cambiaran en tu app android.

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Simulador de Urna Electrónica en java

Simulador de Urna Electrónica en java

Hola 🙂 en esta ocasión un amigo del Brasil nos envía un proyecto java de una Urna Electrónica o Voto Electronico, desarr...

Agregar tablas a los items de un JComboBox

Agregar tablas a los items de un JComboBox

En este post personalizaremos un componente JComboBox para que sus elementos acepten tablas (JTable) en lugar de texto s...

Minimizar aplicación al SystemTray/Bandeja del Sistema

Minimizar aplicación al SystemTray/Bandeja del Sistema

El SystemTray/Bandeja del Sistema o como también se le llama “Área de Notificación” es la sección de la barr...

Crea un Themes WordPress con Netbeans – Configuracion

Crea un Themes WordPress con Netbeans – Configuracion

Este post te enseña una manera que tengo de configurar Netbeans para crear y ejecutar un proyecto php utilizando el CMS...

Crear ayuda HTML para programa con JavaFX Swing

Crear ayuda HTML para programa con JavaFX Swing

En este post veremos como crear una aplicación de ayuda al usuario similar al extinto javahelp. Pero en esta oportunidad...

Descargar Doodle Google Pacman

Descargar Doodle Google Pacman

Hace un par de años atras google para el aniversario del juego de Pacman saco un doodle en su homenaje, ese doodle que s...

Comparte lo que sabes

Categorias

Últimas entradas

En este post conoceremos algunos de los operadores de comparación que existen en Linux y realizaremos unos ejercicios pa...

En este post conocernos lo que son las Estructuras de Control IF en los script de Bash. Estas estructuras nos ayudan a c...

Todo producto tecnológico tiene un ciclo de vida, algunos bastante corto otros muy largo, podemos mencionar el software...

Cada versión de Linux viene con su propia terminal predeterminada para interactuar con el Sistema Operativo a través de...

Android Bolivia

MAUS