Skip to main content

How to take Firebase Database in Kotlin

We are used to connecting firebases database using Java. But how can we take database with Kotlin? Event it is not listed in the Firebase document. I've been able to do this after many attempts. As Android adopts Kotllyn as a formal language, I expect it to be documented as soon as possible.


firebase database with kotlin



This app is English Radio Application made with Kotllyn. I will show you how this app receive Firebase database.

https://play.google.com/store/apps/details?id=com.english_radio 


Everytime this app is synchronized with Firebase database for radio channel. Let's see Firebase database structure.


firebase database with kotlin



Let's take a closer look at this "c_data" node.
It has boolean, String, Array object.
And then we can take this like that.


object FBReceiveHelper {

    val cDB: DatabaseReference by lazy { FirebaseDatabase.getInstance().getReference(KO_Attributes.C_DATA)}

    fun getChannelsData(onReceiveComplete: OnReceiveComplete){
        cDB.addListenerForSingleValueEvent(object: ValueEventListener{
            override fun onCancelled(error: DatabaseError?) {
                onReceiveComplete.onFailed()
            }

            override fun onDataChange(snapShot: DataSnapshot?) {
                snapShot?.let { onReceiveComplete.onSuccess(it)}            }
        })
    }
......


Database Model is like that


@IgnoreExtraProperties
data class ChannelArray(var app_server_on: Boolean = true, var app_version: String = "1.4.1", var channel_array: ArrayList<ChannelData> = arrayListOf<ChannelData>())

IgnoreExtraProperty means that if it has object not included in the Firebase database, ignore this without error processing.



In Activity or using class :


FBReceiveHelper.getChannelsData(object : FBReceiveHelper.OnReceiveComplete{
    override fun onSuccess(dataSnapshot: DataSnapshot?) {
        println(dataSnapshot)
        val channelArray = dataSnapshot?.getValue(ChannelArray::class.java)
.....


Get channel data (c_data) to ChannelArray class.


Comments

Popular posts from this blog

OpenGL SL - Show Video and Image

The simple image is made like this. void  mainImage(  out   vec4  fragColor,  in   vec2  fragCoord ){      // Normalized pixel coordinates (from 0 to 1)      vec2  uv = fragCoord/iResolution.xy;           //uv.x = uv.x - 0.3;      fragColor =  texture (iChannel0, uv); } I think GPU processing has two major steps. Normalizing and Pointing. 1. Normalizing Each pixel has screen coordinate and we need to normalizing from 0.0 to 1.0, because there are many displays with various resolutions around us. We can not manage it at each resolution. It is very troublesome. So we should normalize it :   vec2   uv = fragCoord/iResolution.xy; 2. Pointing I told you each pixel has a screen coordinate. At each coordinate we need to link with sampler's coordinate. Sampler has also coordinate 0.0 to 1.0. As a result, we see the samplers p...

How to make gaussian blur in SparkAR

 Gaussian blur is result of blurring an image by Gaussian function. We need to use large kernel to make strong blur and this cause the high complexity. And that's why we should use multi-pass which is seperated into horizontal, vertical pass . It can reduce the complexity and make faster. In Spark AR there are many ways to make it. And I wanna introduce one of them using shader files (.sca). You can download it for free from the gumload link below. It is modulated to adjust horizontal, vertical strength easily . Hope this can help you. Loading...

OpenGL SL - Mosaic effect

Mosaic effect is similar to lowering the resolution of an image. Let's see example image. And full source code likes below. void mainImage( out vec4 fragColor, in vec2 fragCoord ){     // Normalized pixel coordinates (from 0 to 1)     vec2 uv = fragCoord/iResolution.xy;     if (uv.x > 0.7 && uv.y < 0.4 ){          //left bottoom small image         uv.x -= 0.6 ;         uv *= 2.0 ;         fragColor = texture (iChannel0, uv);         fragColor += vec4 ( 0.2 );         return ;     }     //mosaic effect     uv = uv * 30.0 ;     vec2 uv = floor (uv);     uv = uv/ 30.0 ;     fragColor = texture (iChannel0, uv); } The key function of mosaic effect is "floor" If you want to make it sharper, multiply uv by ...