Android Tutorial Firebase Realtimedatabase user is typing feature


A nice feature is to display whether a user is typing or not.

Most apps have a bubble added or by WhatsApp is a simple "wrtiting.." on top.

This is the result of this Tutorial:

For the Tutorial how to create a room and create messages in there click here. You can use it here.

and how to do that, I explain now. :)

We need the Realtimedatabase lib. here.

in this Tutorial i use the AuthEX lib for anonymous login.

Now we are ready to start.

Sub Process_Globals
  'it is better to add this in a Service
Public auth As FirebaseAuthEx
Public realtime As FirebaseDatabase

End Sub

Sub Globals

Dim typingref As DatabaseReference

Dim tmr_iswrtiting As Timer

Dim istyping2 As Boolean

Dim EditText1 As EditText

Dim Button_Send As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)


    'this is better in a service!
    realtime.PersistenceEnabled = True


    tmr_iswrtiting.Initialize("tmr_iswrtiting", 5000) 'we need a timer to set the value to false if the user not writing after 5 seconds pause

typingref.Initialize("istyping",realtime.getReference2("/rooms/" & "id of the room/" & "typingIndicator"),"typing")
typingref.onDisconnectSetValue(CreateMap(auth.currentuser.uid : False))

End Sub

'now we need a EditText

Sub EditText1_TextChanged (Old As String, New As String)
tmr_iswrtiting.Enabled = False 'if the user is typing set the timer false

istyping2 = True

tmr_iswrtiting.Enabled = True 'set timer true, because if the user is not typing
End Sub

Sub tmr_iswrtiting_Tick

      istyping2 = False 'user is not typing


    tmr_iswrtiting.Enabled = False 'set timer false
End Sub

'the event if a new user is typing

'the same on ChildCahnged this is Important!

Sub  istyping_onChildChanged(Snapshot As Object, child As String, tag As Object)

Dim snap As DataSnapshot = Snapshot
    Dim NewMessage As Map = snap.Value
    For i = 0 To NewMessage.Size - 1
        If NewMessage.GetKeyAt(i) = auth.CurrentUser.Uid Then 'if the key my uid then not display "writing..."
            If NewMessage.GetValueAt(i) = True Then 'if my partner is writing then
                ToastMessageShow("schreibt...", False) 'here you can set what happent if the partner is writing, for example you can set the bubble.visible = true or how in WhatsApp show the label with the input "wrtiting..." or so.
                ToastMessageShow("schreibt nicht mehr...", False) 'what happend if the user does not write anymore.
            End If
        End If
End Sub

'now if we are send the message
Sub Button_Send_Click

   'then set the value to False "user is not writing"
    istyping2 = False


End Sub

'It can also happen that a user leaves the room faster than the 5 seconds without sending the Mwssage, for this reason we add this

Sub Activity_Create(FirstTime As Boolean)
if istyping2 = true then

    istyping2 = False


End If

End Sub

Update: Added "ondisconnectsetvalue"

I hope i can help you with this tutorial, it is a nice feature. For tips or questions I'm open.
Last edited:


Licensed User
Great, i was needing something like that, now i just have to create Video, Image, Audio, Animation Interfaces. Thanks, Friend.