Android Tutorial Firebase RealtimeDatabase B4A interaction with Inline Java code Part - 1

To prepare b4a for interaction you should add the following:
Code: Copy
#AdditionalJar: com.google.firebase:firebase-database
#AdditionalJar: com.google.firebase:firebase-database-collection
at the top of the main module
Integrate Firebase services in manifest:
XML: Copy
CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)
CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)
Define a Javaobject called (FBBridge)
Code: Copy
Private fbBridge As JavaObject
Define the class in inline Java:
Java: Copy
import com.google.firebase.database.*;
...
public static class FirebaseBridge {
...
}
First, we define FirebaseDatabase then DatabaseReference classes
Code: Copy
private FirebaseDatabase database;
private DatabaseReference roomsRef;

The constructor should define BA for Event raising:
Our reference is called 'rooms'
Code: Copy
public FirebaseBridge(B4AClass me) {
        this.ba = me.getBA(); 
        database = FirebaseDatabase.getInstance();
        roomsRef = database.getReference("rooms");
    }
Let's now start the listener:
Code: Copy
public void startRoomListener() {
        roomsRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                try {
                    Object value = snapshot.getValue();
                    String json = value == null ? "{}" : new JSONObject((java.util.Map) value).toString();
                    ba.raiseEventFromUI(FirebaseBridge.this, "onroomschanged", json);
                } catch (Exception e) {
                    BA.Log("JSON error: " + e.getMessage());
                }
            }

            @Override
            public void onCancelled(DatabaseError error) {
                BA.Log("Firebase cancelled: " + error.getMessage());
            }
        });
    
    }
 
Back
Top