noor1yasser9 / VideoCalling

Simple application. First the user creates a new account in the application using Firebase Auth (Sign Up), Second, user will log in to the application and We will store logged user information into shared preferences to handle auto-sign in so users don't need to enter email and password every time, and Final we display list of registered users in the application except for the currently logged user because he cannot establish a call with himself.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Video Meeting

  • Simple application. First the user creates a new account in the application using Firebase Auth (Sign Up), Second, user will log in to the application and We will store logged user information into shared preferences to handle auto-sign in so users don't need to enter email and password every time, and Final we display list of registered users in the application except for the currently logged user because he cannot establish a call with himself.

✨ Features Project Android:

  • 100% Kotlin
  • MVVM architecture
  • Single activity
  • dataBinding

Used libraries

  • Firebase Auth

    Before you begin

    1. If you haven't already, add Firebase to your Android project.

    2. Using the Firebase Android BoM, declare the dependency for the Firebase Authentication Android library in your module (app-level) Gradle file (usually app/build.gradle).

      dependencies {
        // Import the BoM for the Firebase platform
         implementation platform('com.google.firebase:firebase-bom:26.2.0')
      
         // Declare the dependency for the Firebase Authentication library
         // When using the BoM, you don't specify versions in Firebase library dependencies
         implementation 'com.google.firebase:firebase-auth'
      }
      



  • Cloud Firestore

      dependencies {
          implementation 'com.google.firebase:firebase-admin:7.1.0'
      }
    
  • Firebase Cloud Messaging

      dependencies {
          implementation 'com.google.firebase:firebase-messaging'
      }
    
    • A service that extends FirebaseMessagingService. This is required if you want to do any message handling beyond receiving notifications on apps in the background. To receive notifications in foregrounded apps, to receive data payload, to send upstream messages, and so on, you must extend this service.
         <service
             android:name=".java.MyFirebaseMessagingService"
             android:exported="false">
             <intent-filter>
                 <action android:name="com.google.firebase.MESSAGING_EVENT" />
             </intent-filter>
         </service>
              <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
              See README(https://goo.gl/l4GJaQ) for more. -->
         <meta-data
             android:name="com.google.firebase.messaging.default_notification_icon"
             android:resource="@drawable/ic_stat_ic_notification" />
         <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
              notification message. See README(https://goo.gl/6BKBk7) for more. -->
         <meta-data
             android:name="com.google.firebase.messaging.default_notification_color"
             android:resource="@color/colorAccent" />
  • Android architecture components

        dependencies {
                  // navigation
                  implementation "androidx.navigation:navigation-fragment-ktx:2.3.2"
                  implementation "androidx.navigation:navigation-ui-ktx:2.3.2"
    
                  // ViewModel &  LiveData
                  implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
                  implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
        }
    
  • Retrofit

            dependencies {
                 // Retrofit
                implementation 'com.squareup.retrofit2:retrofit:2.9.0'
                implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
                implementation 'com.squareup.okhttp3:okhttp:4.9.0'
             }
    
  • MultiDex

       dependencies {
          //MultiDex
          implementation 'androidx.multidex:multidex:2.0.1'
           }
    

For the Video Call I used SDK JITSI

Use pre-build SDK artifacts/binaries

  • In your project, add the Maven repository https://github.com/jitsi/jitsi-maven-repository/raw/master/releases and the dependency org.jitsi.react:jitsi-meet-sdk into your build.gradle files.

    The repository typically goes into the build.gradle file in the root of your project:

               allprojects {
                   repositories {
                       google()
                       jcenter()
                       maven {
                           url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
                       }
                   }
               }
    

    Dependency definitions belong in the individual module build.gradle files:

               dependencies {
                   // (other dependencies)
                   implementation ('org.jitsi.react:jitsi-meet-sdk:2.+') { transitive = true }
               }
    
    • JitsiMeetConferenceOptions This object encapsulates all the options that can be tweaked when joining a conference.
      Example:

               JitsiMeetConferenceOptions options = new JitsiMeetConferenceOptions.Builder()
                   .setServerURL(new URL("https://meet.jit.si"))
                   .setRoom("test123")
                   .setAudioMuted(false)
                   .setVideoMuted(false)
                   .setAudioOnly(false)
                   .setWelcomePageEnabled(false)
                   .build();
      

About

Simple application. First the user creates a new account in the application using Firebase Auth (Sign Up), Second, user will log in to the application and We will store logged user information into shared preferences to handle auto-sign in so users don't need to enter email and password every time, and Final we display list of registered users in the application except for the currently logged user because he cannot establish a call with himself.


Languages

Language:Kotlin 100.0%