GithubHelp home page GithubHelp logo

netless-io / flat-android Goto Github PK

View Code? Open in Web Editor NEW
101.0 12.0 63.0 18.47 MB

Project Flat Android is the Android client of Agora Flat open source classroom.

Home Page: https://flat.whiteboard.agora.io/

License: MIT License

Kotlin 99.73% Shell 0.23% HTML 0.04%
android whiteboard virtual-classroom kotlin online-classroom agora-flat e-class

flat-android's Introduction

Agora Flat Android

Project Flat Android is the Android client of Agora Flat open source classroom.

δΈ­ζ–‡

Try it now

Features

  • Open sourced front-end and back-end
  • Optimized teaching experience
    • Big class
    • Small class
    • One on one
  • Real-time interaction
    • Multifunctional interactive whiteboard
    • Real-time video/audio chat(RTC)
    • Real-time messaging(RTM)
    • Participant hand raising
  • Login via
    • Wechat
    • GitHub
    • Google
  • Classroom management
    • Join and create classrooms
    • Support periodic rooms
    • View room history
    • schedule classrooms
  • Classroom recording and replaying
    • Whiteboard replaying
    • Cloud recording for video and audio
    • Messaging replaying
  • Cloud Storage for multi-media courseware
  • Device self-check
  • Auto Updater

Development

Android Code

Flat is an app that attempts to use the latest cutting edge libraries and tools. As a summary:

  • Entirely written in Kotlin.
  • UI Mostly written in Jetpack Compose (see below).
  • Uses Kotlin Coroutines throughout.
  • Uses many of the Architecture Components, including: Room, Lifecycle, ViewModel.
  • Uses Hilt for dependency injection

Development Tool

Flat require the latest Android Studio Arctic Fox release to be able to build the app. This is because the project is written in Jetpack Compose (more on that below).

Environment Variables Reference

Variable Description Note
NETLESS_APP_IDENTIFIER Whiteboard Access Key See Projects and permissions
AGORA_APP_ID Agora App ID For RTC and RTM. See Use an App ID for authentication
WECHAT_APP_ID Wechat Open Platform App ID
FLAT_SERVER_DOMAIN Flat Server deployed address e.g. flat-api.whiteboard.agora.io

Disclaimers

You may use Flat for commercial purposes but please note that we do not accept customizational commercial requirements and deployment supports. Nor do we offer customer supports for commercial usage. Please head to agora-flexible-classroom for such requirements.

flat-android's People

Contributors

aderan avatar aderanfeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flat-android's Issues

unknow property of signing.filepath in build.gradle

Hi, thx for the maintenance of this nice project. I'm just a beginner in android development and I'm just exploring flat.
After I download this project and open it with my Android Studio Bumblebee | 2021.1.1, there is an error presented as follows:

org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'.
Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'signing.filepath' for project ':app' of type org.gradle.api.Project.

I think it comes from the build.gradle file in the signingConfig:

signingConfigs {
      release {
          storeFile file(property('signing.filepath'))
          storePassword property('signing.storePassword')
          keyAlias property('signing.keyAlias')
          keyPassword property('signing.keyPassword')
      }

      debug {
          storeFile file(property('signing.filepath'))
          storePassword property('signing.storePassword')
          keyAlias property('signing.keyAlias')
          keyPassword property('signing.keyPassword')
      }
  }

Is this an OAuth setting for Wechat loggin? There seems to be a little bit less information about set up on android than on the web.
Really hope the flat to have a wider influence in the future.
Best regards.

App crashing on load

E/linker: "/data/app/~~RmvzG0ayhtt_jI35aRLZ6g==/io.agora.flat-2phtGLAq2-f68FmwpBJOmQ==/base.apk!/lib/x86/libagora-ffmpeg.so" has text relocations (https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: io.agora.flat, PID: 6479
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/~~RmvzG0ayhtt_jI35aRLZ6g==/io.agora.flat-2phtGLAq2-f68FmwpBJOmQ==/base.apk!/lib/x86/libagora-ffmpeg.so" has text relocations (https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23)
at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
at java.lang.System.loadLibrary(System.java:1664)
at io.agora.rtc.internal.RtcEngineImpl.loadNativeLibrary(RtcEngineImpl.java:140)
at io.agora.rtc.internal.RtcEngineImpl.initializeNativeLibs(RtcEngineImpl.java:200)
at io.agora.rtc.RtcEngine.create(RtcEngine.java:42)
at io.agora.flat.di.impl.RtcApiImpl.init(RtcApiImpl.kt:22)
at io.agora.flat.MainApplication.onCreate(MainApplication.kt:18)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6712)
at android.app.ActivityThread.access$1300(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 6479 SIG: 9

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.