Coder Social home page Coder Social logo

noor1yasser9 / videocalling Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 826 KB

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.

Kotlin 100.00%
firebase-auth cloud-messaging firebase-database firebase-realtime-database firebase-cloud-messaging jitsi-meet navigation-fragment navigation-ui ssp sdp

videocalling's Introduction

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();
      

videocalling's People

Contributors

noor1yasser9 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.