Android Dersleri – 43 – Firebase Kullanımı – 6

By | 24 Ekim 2020

Android Dersleri serisinin Firebase Kullanımı – 6 dersine hoş geldiniz. Bu dersimiz bir önceki dersimizin devamı niteliğinde. Bu dersimizde de çevrimdışı işlemlerden bahsetmeye devam edeceğiz.

Bağlantı Durumunu Kontrol Etme

Çevrimdışı durumdayken işlemleri yapmaya devam edebiliyorduk ama kullanıcının o an çevrimiçi olup olmadığını kendisine bildirmek uygulamayı daha sağlıklı yapar. Bağlantı durumuna bir örnekle başlayalım hemen.

Uygulamamız şöyle olsun. İnternet bağlantımız var ise ekranda Connected yazısı gözüksün ve ekran yeşil renkte olsun. İnternet bağlantısı gittiğinde ya da olmadığında ise ekranda Not Connected yazısı gözüksün ve ekran kırmızı renkte olsun.

activity_main.xml dosyası;

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:gravity="center"
    android:padding="16dp"
    android:id="@+id/linearLayout1"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Bağlantı Durumu Kontrol Etme"
        android:textAlignment="center"
        android:textSize="40sp"/>

    <TextView
        android:id="@+id/txt_connection_check"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="~ ~ ~"
        android:textSize="20sp"
        android:textAlignment="center"
        android:padding="30dp"/>

</LinearLayout>

MainActivity.java dosyası;

package com.mrcaracal.androiddersleriicinornekuygulama;

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

import android.graphics.Color;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

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 {

    TextView txt_connection_check;
    LinearLayout linearLayout1;

    DatabaseReference databaseReferenceConnected;

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

        txt_connection_check = findViewById(R.id.txt_connection_check);
        linearLayout1 = findViewById(R.id.linearLayout1);

        databaseReferenceConnected = FirebaseDatabase.getInstance().getReference(".info/connected");
        databaseReferenceConnected.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                boolean connectedControl = snapshot.getValue(Boolean.class);
                if (connectedControl){
                    txt_connection_check.setText("Connected");
                    linearLayout1.setBackgroundColor(Color.parseColor("#1aff1a"));
                }
                else{
                    txt_connection_check.setText("Not Connected");
                    linearLayout1.setBackgroundColor(Color.parseColor("#ff3333"));
                }
            }

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

            }
        });
    }
}

Çıktılar;

Görüldüğü üzere internet bağlantısına göre ekrandaki yazı ve arka plan rengi değişiyor.

Firebase, Android’te bant genişliğini ve pil kullanımını azaltmak için bağlantı durumunu otomatik olarak yönetir. Bir istemcinin etkin dinleyicisi olmadığında (60 saniye) bağlantı kesilir.

Firebase Kullanımı dersimizin Çevrimdışı işlemler konusunun (Bağlntı Durumunu Kontrol Etme) sonuna geldik. Bir sonraki dersimizde görüşmek üzere.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir