Quickstart guide for the Agora Flutter SDK(Android/iOS)

Overview

Agora Flutter Quickstart

This tutorial describes how to create an Agora account and build a sample app with Agora using Flutter.

Other Languages:

简体中文_

Prerequisites

Quick Start

This repository shows you how to use Agora Flutter SDK to build a simple video call app. It demonstrates you how to:

  • Join / leave a channel
  • Mute / unmute audio
  • Switch camera views
  • Layout multiple video views

Screenshot-1 Screenshot-2

Create an Account and Obtain an App ID

To build and run the sample application, first obtain an app ID:

  1. Create a developer account at agora.io. Once you finish the sign-up process, you are redirected to the dashboard.
  2. Navigate in the dashboard tree on the left to Projects > Project List.
  3. Copy the app ID that you obtain from the dashboard into a text file. You will use this when you launch the app.

Update and Run the Sample Application

Open the settings.dart file and add the app ID.

  const APP_ID = "";

Run the packages get command in your project directory:

  # install dependencies
  flutter pub get

Once the build is complete, run the run command to start the app.

  # start app
  flutter run

We recommend you to use IDE to control overall build process during development

Details about how to set up the IDE please take a look at here

Error handling

iOS memory leak

if your flutter channel is stable, PlatformView will cause memory leak, you can run flutter channel beta

you can refer to this pull request

Android Black screen

Tips: please make sure your all configurations are correct, but still black screen

if your MainActivity extends io.flutter.embedding.android.FlutterActivity and override the configureFlutterEngine function

please don't forget add super.configureFlutterEngine(flutterEngine)

please don't add GeneratedPluginRegistrant.registerWith(flutterEngine), plugins will be registered auto now

you can refer to official documents

Android Release crash

it causes by code obfuscation because of flutter set android.enableR8=true by the default

Add the following line in the app/proguard-rules.pro file to prevent code obfuscation:

-keep class io.agora.**{*;}

Reporting an issue

Please ensure you provide following information when you report an issue,

Environment

Flutter Doctor

run flutter doctor and copy the log output.

Agora SDK Logs

Insert below code

AgoraRtcEngine.setParameters("{\"rtc.log_filter\": 65535}");

to call.dart The eventual outcome would look like this,

...
    _initAgoraRtcEngine();
    _addAgoraEventHandlers();
    AgoraRtcEngine.enableWebSdkInteroperability(true);
    AgoraRtcEngine.setParameters('{\"che.video.lowBitRateStreamParameter\":{\"width\":320,\"height\":180,\"frameRate\":15,\"bitRate\":140}}');
    AgoraRtcEngine.setParameters("{\"rtc.log_filter\": 65535}");
    AgoraRtcEngine.joinChannel(null, widget.channelName, null, 0);
...

and then start the app. Our sdk log will print directly to console in this case.

Resources

Credit

https://pub.dartlang.org/packages/permission_handler

License

This software is under the MIT License (MIT).

Comments
  • Black Screen over video call.

    Black Screen over video call.

    After doing all setup of Agora SDK in my (Flutter )project all things are working, except video screen. i.e I got channel info as well as broad cast id. even sound , but video are black.

    opened by wizhob2020 40
  • Video Black Screen but audio, join channel is working fine

    Video Black Screen but audio, join channel is working fine

    When I download this example project, it's working perfectly.

    but when I create a new flutter project & copy the same code, it only shows a black screen for video. I tried this for the last 15 hours but still couldn't figure out

    What I did

    • [x] Created New Flutter project
    • [x] Copy the lib folder from this example to the newly created project
    • [x] Updated pubspec.yaml
    • [x] Updated Permissions with AndroidManifest.xml
    • [x] Updated my own APP_ID

    After running the app, it shows only a black screen for video. All remaining staff working fine such as audio, join the channel, remove the channel

    Flutter Doctor Output:

    [✓] Flutter (Channel master, v1.13.4-pre.13, on Mac OS X 10.14.4 18E226, locale en-GB)
     
    [!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
        ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
    [✓] Xcode - develop for iOS and macOS (Xcode 10.2)
    [✓] Android Studio (version 3.3)
    [✓] VS Code (version 1.41.0)
    [✓] Connected device (2 available)
    
    ! Doctor found issues in 1 category.
    

    I found this error when a user joins the channel

    Screenshot 2019-12-20 at 7 49 21 PM

    opened by codesundar 39
  • Can't share the same channel using two different devices

    Can't share the same channel using two different devices

    I cloned the project from Agora/Flutter repository and then I ran the same program on two devices (android emulator and Redmi 7). The problem is because when I type the channel on a device it opens the call (ok) then I type the same text on another device it's like another channel has been created --> they dont't share the channel splitting their screen.

    Flutter doctor:

    `Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, v1.7.8+hotfix.4, on Linux, locale pt_BR.UTF-8) [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.0) [!] Android Studio (version 3.4) ✗ Flutter plugin not installed; this adds Flutter specific functionality. ✗ Dart plugin not installed; this adds Dart specific functionality. [✓] VS Code (version 1.36.1) [✓] Connected device (2 available)

    ! Doctor found issues in 1 category.`

    build.gradle:

    `def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } }

    def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") }

    def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' }

    def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' }

    apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

    android { compileSdkVersion 28

    lintOptions {
        disable 'InvalidPackage'
    }
    
    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.agoraflutterquickstart"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
        // Use code below for production build
        // For debug mode you need to comment above lines of code
        // Issue with 'libflutter.so'
        ndk {
            abiFilters 'armeabi-v7a', 'x86' ,'arm64-v8a'
        }
    }
    
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
    

    }

    flutter { source '../..' }

    dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }`

    AndroidManifest.xml:

    `

    <!-- The INTERNET permission is required for development. Specifically,
         flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="agora_flutter_quickstart"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
    
    `

    pubspec.yaml:

    name: agora_flutter_quickstart description: A new Flutter project.

    version: 1.0.0+1

    environment: sdk: ">=2.0.0-dev.68.0 <3.0.0"

    dependencies: flutter: sdk: flutter

    cupertino_icons: ^0.1.2 agora_rtc_engine: permission_handler:

    dev_dependencies: flutter_test: sdk: flutter

    flutter:

    uses-material-design: true `

    Logs:

    `Using hardware rendering with device Android SDK built for x86. If you get graphics artifacts, consider enabling software rendering with "--enable-software-rendering". Launching lib/main.dart on Redmi Note 7 in debug mode... Initializing gradle... 0,6s Resolving dependencies... 1,3s Running Gradle task 'assembleDebug'...
    Running Gradle task 'assembleDebug'... Done 1,4s Built build/app/outputs/apk/debug/app-debug.apk. Launching lib/main.dart on Android SDK built for x86 in debug mode... Running Gradle task 'assembleDebug'...
    Running Gradle task 'assembleDebug'... Done 12,5s Built build/app/outputs/apk/debug/app-debug.apk. Installing build/app/outputs/apk/app.apk... 1,9s D/EGL_emulation( 7025): eglMakeCurrent: 0xe83855a0: ver 2 0 (tinfo 0xe8383720) I/Choreographer( 7025): Skipped 53 frames! The application may be doing too much work on its main thread. D/EGL_emulation( 7025): eglMakeCurrent: 0xe83855a0: ver 2 0 (tinfo 0xe8383720) D/EGL_emulation( 7025): eglMakeCurrent: 0xe6926f40: ver 2 0 (tinfo 0xd00877a0) I/OpenGLRenderer( 7025): Davey! duration=942ms; Flags=1, IntendedVsync=7277932346150, Vsync=7278815679448, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=7278826050994, AnimationStart=7278826120675, PerformTraversalsStart=7278827271328, DrawStart=7278831537179, SyncQueued=7278832803570, SyncStart=7278838923459, IssueDrawCommandsStart=7278839023693, SwapBuffers=7278848193718, FrameCompleted=7278881338849, DequeueBufferDuration=18144000, QueueBufferDuration=112000, Syncing files to device Redmi Note 7... 1.343ms Syncing files to device Android SDK built for x86... 1.152ms

    🔥 To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R". An Observatory debugger and profiler on Redmi Note 7 is available at: http://127.0.0.1:37375/g2dhgvGVRgU=/ An Observatory debugger and profiler on Android SDK built for x86 is available at: http://127.0.0.1:43477/E40fBWNjJIc=/ For a more detailed help message, press "h". To detach, press "d"; to quit, press "q". W/Settings( 7025): Setting android_id has moved from android.provider.Settings.System to android.provider.Settings.Secure, returning read-only value. E/BluetoothAdapter( 7025): Bluetooth binder is null E/libc ( 7025): Access denied finding property "net.dns1" E/libc ( 7025): Access denied finding property "net.dns2" E/libc ( 7025): Access denied finding property "net.dns3" E/libc ( 7025): Access denied finding property "net.dns4" D/ ( 7025): HostConnection::get() New Host Connection established 0xcee2ecc0, tid 7067 E/libc ( 7025): Access denied finding property "net.dns1" E/libc ( 7025): Access denied finding property "net.dns2" E/libc ( 7025): Access denied finding property "net.dns3" E/libc ( 7025): Access denied finding property "net.dns4" D/WEBRTCN( 7025): SetRenderAndroidVM D/ ( 7025): HostConnection::get() New Host Connection established 0xc6fffe40, tid 7077 D/EGL_emulation( 7025): eglCreateContext: 0xcbac9ca0: maj 2 min 0 rcv 2 E/BluetoothAdapter( 7025): Bluetooth binder is null E/BluetoothAdapter( 7025): Bluetooth binder is null E/BluetoothAdapter( 7025): Bluetooth binder is null I/chatty ( 7025): uid=10089(com.example.agoraflutterquickstart) identical 4 lines E/BluetoothAdapter( 7025): Bluetooth binder is null E/libc ( 7025): Access denied finding property "net.dns1" E/libc ( 7025): Access denied finding property "net.dns2" E/libc ( 7025): Access denied finding property "net.dns3" E/libc ( 7025): Access denied finding property "net.dns4" D/EGL_emulation( 7025): eglMakeCurrent: 0xcbac9ca0: ver 2 0 (tinfo 0xc932aac0) I/AGORA_SDK( 7025): Surface changed to width 1080 height 843 D/EGL_emulation( 7025): eglMakeCurrent: 0xe6926f40: ver 2 0 (tinfo 0xd00877a0) W/VideoCapabilities( 7025): Unrecognized profile 4 for video/hevc I/VideoCapabilities( 7025): Unsupported profile 4 for video/mp4v-es I/CameraManagerGlobal( 7025): Connecting to camera service D/gralloc_ranchu( 7025): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) D/ ( 7025): HostConnection::get() New Host Connection established 0xcee2ecc0, tid 7067 D/gralloc_ranchu( 7025): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) E/RtcEngine( 7025): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference D/ ( 7025): HostConnection::get() New Host Connection established 0xc8e54780, tid 7072 W/Thread-53( 7025): type=1400 audit(0.0:78): avc: denied { node_bind } for scontext=u:r:untrusted_app:s0:c89,c256,c512,c768 tcontext=u:object_r:node:s0 tclass=rawip_socket permissive=0 D/gralloc_ranchu( 7025): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) D/ ( 7025): HostConnection::get() New Host Connection established 0xc8e54780, tid 7072 D/gralloc_ranchu( 7025): gralloc_unregister_buffer: exiting HostConnection (is buffer-handling thread) D/ ( 7025): HostConnection::get() New Host Connection established 0xc8e54780, tid 7072 D/EGL_emulation( 7025): eglMakeCurrent: 0xe6926f40: ver 2 0 (tinfo 0xd00877a0) D/WEBRTCN( 7025): StartRender: thread started: 3286243696 D/ ( 7025): HostConnection::get() New Host Connection established 0xc8fff500, tid 7099 D/EGL_emulation( 7025): eglCreateContext: 0xc8fa1ba0: maj 2 min 0 rcv 2 D/EGL_emulation( 7025): eglMakeCurrent: 0xc8fa1ba0: ver 2 0 (tinfo 0xd01626a0) I/AGORA_SDK( 7025): Surface changed to width 1080 height 1584 D/EGL_emulation( 7025): eglMakeCurrent: 0xe6926f40: ver 2 0 (tinfo 0xd00877a0) D/ ( 7025): HostConnection::get() New Host Connection established 0xcee2ecc0, tid 7067 D/ ( 7025): HostConnection::get() New Host Connection established 0xc8d7dc00, tid 7100 D/ ( 7025): HostConnection::get() New Host Connection established 0xe83a06c0, tid 7040 W/Settings(24652): Setting android_id has moved from android.provider.Settings.System to android.provider.Settings.Secure, returning read-only value. I/AudioManager(24652): In isBluetoothScoOn(), calling application: com.example.agoraflutterquickstart E/libc (24652): Access denied finding property "net.dns1" E/libc (24652): Access denied finding property "net.dns2" E/libc (24652): Access denied finding property "net.dns3" E/libc (24652): Access denied finding property "net.dns4" E/libc (24652): Access denied finding property "net.dns1" E/libc (24652): Access denied finding property "net.dns2" E/libc (24652): Access denied finding property "net.dns3" E/libc (24652): Access denied finding property "net.dns4" E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" W/utterquickstart(24652): type=1400 audit(0.0:57823): avc: denied { read } for name="u:object_r:vendor_camera_prop:s0" dev="tmpfs" ino=12717 scontext=u:r:untrusted_app:s0:c93,c257,c512,c768 tcontext=u:object_r:vendor_camera_prop:s0 tclass=file permissive=0 D/WEBRTCN(24652): SetRenderAndroidVM I/AGORA_SDK(24652): Surface changed to width 1080 height 1291 I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In setSpeakerphoneOn(), on: false, calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In setSpeakerphoneOn(), on: true, calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart I/AudioManager(24652): In isSpeakerphoneOn(), calling application: com.example.agoraflutterquickstart E/libc (24652): Access denied finding property "net.dns1" E/libc (24652): Access denied finding property "net.dns2" E/libc (24652): Access denied finding property "net.dns3" E/libc (24652): Access denied finding property "net.dns4" W/VideoCapabilities(24652): Unsupported mime video/divx W/VideoCapabilities(24652): Unsupported mime video/divx311 W/VideoCapabilities(24652): Unsupported mime video/divx4 W/VideoCapabilities(24652): Unrecognized profile 4 for video/hevc W/VideoCapabilities(24652): Unrecognized profile/level 0/3 for video/mpeg2 W/VideoCapabilities(24652): Unrecognized profile/level 0/3 for video/mpeg2 I/VideoCapabilities(24652): Unsupported profile 4 for video/mp4v-es W/Utils (24652): could not parse long range '175-174' I/CameraManagerGlobal(24652): Connecting to camera service E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" I/chatty (24652): uid=10349(com.example.agoraflutterquickstart) Thread-28 identical 1 line E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" W/CameraManagerGlobal(24652): [soar.cts] ignore the status update of camera: 2 E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" W/CameraManagerGlobal(24652): [soar.cts] ignore the status update of camera: 3 E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" W/Thread-27(24652): type=1400 audit(0.0:57824): avc: denied { read } for name="u:object_r:vendor_camera_prop:s0" dev="tmpfs" ino=12717 scontext=u:r:untrusted_app:s0:c93,c257,c512,c768 tcontext=u:object_r:vendor_camera_prop:s0 tclass=file permissive=0 E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" W/CameraManagerGlobal(24652): ignore the torch status update of camera: 3 W/Thread-27(24652): type=1400 audit(0.0:57825): avc: denied { read } for name="u:object_r:vendor_camera_prop:s0" dev="tmpfs" ino=12717 scontext=u:r:untrusted_app:s0:c93,c257,c512,c768 tcontext=u:object_r:vendor_camera_prop:s0 tclass=file permissive=0 W/Binder:24652_2(24652): type=1400 audit(0.0:57830): avc: denied { read } for name="u:object_r:vendor_camera_prop:s0" dev="tmpfs" ino=12717 scontext=u:r:untrusted_app:s0:c93,c257,c512,c768 tcontext=u:object_r:vendor_camera_prop:s0 tclass=file permissive=0 E/RtcEngine(24652): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference E/libc (24652): Access denied finding property "persist.vendor.camera.privapp.list" E/libc (24652): Access denied finding property "vendor.camera.aux.packagelist" I/Adreno (24652): DequeueBuffer: dequeueBuffer failed I/Adreno (24652): DequeueBuffer: dequeueBuffer failed I/Adreno (24652): DequeueBuffer: dequeueBuffer failed W/OpenGLRenderer(24652): swapBuffers encountered EGL error 12301 on 0x73532b2f80, halting rendering... D/WEBRTCN(24652): StartRender: thread started: 1223644400 I/AGORA_SDK(24652): Surface changed to width 1080 height 1976 E/RtcEngine( 7025): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference E/RtcEngine(24652): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference `

    opened by matheusmota3242 30
  • Black Screen During video calls, Error 17 followed by onJoinChannel call

    Black Screen During video calls, Error 17 followed by onJoinChannel call

    Screenshot_2020-02-18-11-08-12-973_beta prithvi kinview_365

    D/Camera (25653): Lct package name is beta.prithvi.kinview_365 E/libc (25653): Access denied finding property "vendor.camera.aux.packagelist" E/AccessibilityBridge(25653): VirtualView node must not be the root node. D/AudioManager(25653): getStreamVolume isRestricted mode = 0 D/AudioManager(25653): getStreamVolume isRestricted mode = 0 E/RtcEngine(25653): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference V/AudioTrack(25653): getMinFrameCount=1288: afFrameCount=1920, afSampleRate=48000, afLatency=80 V/AudioTrack(25653): set(): streamType -1, sampleRate 16000, format 0x1, channelMask 0x1, frameCount 2576, flags #0, notificationFrames 0, sessionId 0, transferType 3, uid -1, pid -1 V/AudioTrack(25653): set() streamType -1 frameCount 2576 flags 0000 V/AudioTrack(25653): Building AudioTrack with attributes: usage=2 content=1 flags=0x0 tags=[] W/AudioTrack(25653): Use of stream types is deprecated for operations other than volume control W/AudioTrack(25653): See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case I/AudioManager(25653): In isSpeakerphoneOn(), calling application: beta.prithvi.kinview_365 I/AudioManager(25653): In isSpeakerphoneOn(), calling application: beta.prithvi.kinview_365 D/AudioManager(25653): getStreamVolume isRestricted mode = 0 I/AudioManager(25653): In isSpeakerphoneOn(), calling application: beta.prithvi.kinview_365 I/AudioManager(25653): In isSpeakerphoneOn(), calling application: beta.prithvi.kinview_365 E/AccessibilityBridge(25653): VirtualView node must not be the root node. W/AudioTrack(25653): releaseBuffer() track 0x794e95e800 disabled due to previous underrun, restarting I/AudioManager(25653): In isSpeakerphoneOn(), calling application: beta.prithvi.kinview_365

    The code for the calling page is nothing different from the Agora Quick Start for Flutter, but i set the channel ID as "sample"...

    opened by Prithvi-Rajan 29
  • App Crash in Release Mode

    App Crash in Release Mode

    The app crashes as soon as i try to enter a channel name and click on join in release mode . I have added the keep class statement to my proguard file and also removed 'arm-v8a- from the ndk in build.gradle.

    This is my log. Please help! ''' E/flutter ( 5813): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.NoSuchMethodError: no static or non-static method "Lio/agora/rtc/internal/RtcEngineImpl;.nativeGetParameters(JLjava/lang/String;)Ljava/lang/String;" E/flutter ( 5813): at java.lang.Runtime.nativeLoad(Native Method) E/flutter ( 5813): at java.lang.Runtime.doLoad(Runtime.java:435) E/flutter ( 5813): at java.lang.Runtime.loadLibrary(Runtime.java:370) E/flutter ( 5813): at java.lang.System.loadLibrary(System.java:1076) E/flutter ( 5813): at io.agora.rtc.internal.RtcEngineImpl.E(Unknown Source) E/flutter ( 5813): at io.agora.rtc.internal.RtcEngineImpl.F(Unknown Source) E/flutter ( 5813): at io.agora.rtc.c.a(Unknown Source) E/flutter ( 5813): at io.agora.a.c.onMethodCall(Unknown Source) E/flutter ( 5813): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(Unknown Source) E/flutter ( 5813): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(Unknown Source) E/flutter ( 5813): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source) E/flutter ( 5813): at android.os.MessageQueue.nativePollOnce(Native Method) E/flutter ( 5813): at android.os.MessageQueue.next(MessageQueue.java:323) E/flutter ( 5813): at android.os.Looper.loop(Looper.java:135) E/flutter ( 5813): at android.app.ActivityThread.main(ActivityThread.java:5539) E/flutter ( 5813): at java.lang.reflect.Method.invoke(Native Method) E/flutter ( 5813): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) E/flutter ( 5813): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) E/flutter ( 5813): F/flutter ( 5813): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env).

    '''

    opened by HardikkMadaan 27
  • broadcast video is getting zoomed

    broadcast video is getting zoomed

    I used this code:- await AgoraRtcEngine.setParameters( '{"che.video.lowBitRateStreamParameter":{"width":320,"height":180,"frameRate":15,"bitRate":180}}');

    it happens every time with me.

    Channel Name: -R_nRurV

    opened by karansingla007 26
  • How to take screenshot in flutter?

    How to take screenshot in flutter?

    During video call when I'm trying to take screenshot programmatically in flutter. Only a black screen appears. Please provide a solution to take a screenshot.

    opened by suriyaKalidoss123 24
  • In android emulator and device, camera not opened only black screen

    In android emulator and device, camera not opened only black screen

    I am trying to use this sdk but I got black screen in both android device and emulator.

    W/VideoCapabilities(13641): Unrecognized profile 2130706433 for video/avc W/VideoCapabilities(13641): Unrecognized profile 2130706434 for video/avc W/VideoCapabilities(13641): Unrecognized profile 2130706433 for video/avc W/VideoCapabilities(13641): Unrecognized profile 2130706434 for video/avc W/VideoCapabilities(13641): Unrecognized profile 2130706433 for video/avc W/VideoCapabilities(13641): Unrecognized profile 2130706434 for video/avc

    opened by softwaredev21 24
  • [bug] Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference

    [bug] Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference

    Just a bug report.

    I build sample code of this repository. When start AgoraRTC video chat, the following error occurred.

    I/AGORA_SDK(32650): Surface changed to width 1080 height 1808
    E/RtcEngine(32470): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference
    

    What should I do ?

    opened by yukitaka13-1110 23
  • i get an error while call setLiveTranscoding method

    i get an error while call setLiveTranscoding method

    i want to redirect my stream to youtube, facebook

    i am using setLiveTranscoding and addPublishStreamUrl but it gives me error

    PlatformException(error, length=3; index=100, null) agora
    

    i am using agora_rtc_engine: ^1.0.10

    question 
    opened by karansingla007 22
  • How do i make the video call one way from one to many

    How do i make the video call one way from one to many

    Hello,

    Im using your video chat example, created a room and the video is working, but its two way video.

    I only want the video to go from the sender to many others in the room, but one way only.

    Is there a way to do that?

    Thanks

    opened by nsmith1024 19
  • Please migrate this repo to use Android embedding v2.

    Please migrate this repo to use Android embedding v2.

    I just tried to run this repo. All that happened was I got a load of messages telling me to migrate to Android embedding v2. Can someone do the update so this repo just works please.

    opened by billy-the-fish 1
  • Flutter initialization failed.

    Flutter initialization failed.

    I use agora rtc engin 4.2.0 and it show me the error when i open my app after putting dependency 'agora_rtc_engine: ^4.0.7' and my app is crashing in debug mode and show the error

    √ Built build\app\outputs\flutter-apk\app-debug.apk. E/FlutterLoader(17183): Flutter initialization failed. E/FlutterLoader(17183): java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.video_call_test-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.video_call_test-1/lib/arm, /data/app/com.example.video_c

    Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 2.8.1, on Microsoft Windows [Version 10.0.19042.1466], locale en-US) [√] Android toolchain - develop for Android devices (Android SDK version 31.0.0) [√] Chrome - develop for the web [√] Android Studio (version 4.2) [√] VS Code (version 1.63.2) [√] Connected device (3 available)

    • No issues found!

    opened by MasoomRaza752 9
  • Agora views not working

    Agora views not working

    I'm using agora_rtc_engine : ^3.2.1 It was working previously but when I try to do this again its videos not showing but audio is working. Please let me know a solution

    My dart sdk is 2.9.1

    opened by ziasultan2 7
  • avc: denied { read } for name=

    avc: denied { read } for name="temp" dev="sysfs" ino=11620 scontext=u:r:untrusted_app:s0:c87,c256,c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0

    hello

    i get this error when i make this call " await _engine.joinChannel(null, widget.channelName, null, 0);" but works if i add a token, with token the issue is i am testing and token expires is there a way to make token newver expire

    this is the error without token

    avc: denied { read } for name="temp" dev="sysfs" ino=11620 scontext=u:r:untrusted_app:s0:c87,c256,c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0

    opened by 123Check 3
  • Black Screen on International Video Calls

    Black Screen on International Video Calls

    I'm trying to make a video call abroad on my project but even though call has successfully created and both sides have connected there is no video or audio on both sides. My project is a test project (I only have the app id). Do I need to have certificate and token or is there any other solutions?

    Agora version: 3.1.3

    opened by b21627816 6
Owner
Agora.io Community
For & by the community 🤓
Agora.io Community
Hybrid App build on flutter SDK able to run on Android, IOS, web, desktop

Codeforces Visualizer APP Ready to use Flutter Application. Uses codeforces API. Useful for codeforces programmers. ScreenShots Single User Page Compa

vikas yadav 13 Dec 31, 2022
A Flutter plugin that supports Pangle SDK on Android and iOS.

Thanks for non-commercial open source development authorization by JetBrains. 穿山甲 Flutter SDK `pangle_flutter`是一款集成了字节跳动穿山甲 Android 和 iOS SDK的 Flutter

null 121 Dec 2, 2022
Cross platform application for iOS and Android using Google's SDK Flutter.

scout Cross platform application for iOS and Android using Google's SDK Flutter. Launch screen for the application. The menu for selecting cookies. Cu

null 0 Nov 9, 2021
Task List application developed in Dart language with SDK Flutter for Android, iOS and Web

Task List application developed in Dart language with SDK (Software Development Kit) Flutter for Android, iOS and Web.

João Bruno 2 Jun 2, 2022
A starter project guide to learn Flutter and its tools.

flutter_catalog A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started

null 2 Sep 21, 2021
Muslim Guide App Built With Flutter

Muslim Guide App Muslim Guide App Muslim Guide App Muslim Guide App Downloadwer Mslim guide app is the app that help the muslims in their dialy habits

null 12 Oct 23, 2022
Paystack SDK for Android. Accept payments on Android

Paystack Android This is a library for easy integration of Paystack with your Android application. Use this library in your Android app so we shoulder

Paystack 117 Dec 12, 2022
Stream Feed official Flutter SDK. Build your own feed experience using Dart and Flutter.

Official Flutter packages for Stream Activity Feeds The official Dart client for Stream Activity Feeds, a service for building activity feed applicati

Stream 67 Sep 26, 2022
Pensil Community official Flutter SDK. Build your own community experience using Dart and Flutter.

Official flutter package for Pensil The official Dart client for Pensil communities, a service for building communites applications. This library can

Pensil Inc 6 Oct 6, 2022
A Flutter plugin for the Google Mobile Ads SDK

A Flutter plugin for the Google Mobile Ads SDK

Google Ads 251 Jan 2, 2023
P2P payment solution using Stream's Flutter SDK and Rapyd's Wallet API

Peer-to-peer payment integration to a messaging app using Flutter ?? This project shows how to integrate a peer-to-peer payment solution to your Strea

Souvik Biswas 15 Dec 8, 2022
Official plugin for using Thepeer SDK with flutter https://thepeer.co

Flutter Thepeer This package makes it easy to use the Thepeer in a flutter project. ?? Screen Shots ?? How to Use plugin ThePeer Send Launch ThepeerSe

The Peer 23 Dec 27, 2022
A simple chat app UI using flutter SDK project.

Chatty App A simple chat app UI using flutter SDK project. Screenshot Getting Started This project is a starting point for a Flutter application. A fe

Tengku Belmiro 5 Jul 15, 2022
Flutter SDK for Stripe.

Flutter Stripe The Stripe Flutter SDK allows you to build delightful payment experiences in your native Android and iOS apps using Flutter. We provide

null 633 Jan 7, 2023
Official Flutter SDK for Khalti Payment systems

Khalti Payment Gateway for Flutter Use Khalti Payment Gateway solution in your app or website to simplify payment for your customers. You do not need

Khalti 16 Oct 13, 2022
This project is the HERE SDK reference application for Flutter

HERE SDK Reference Application for Flutter The reference application for the HERE SDK for Flutter (Navigate Edition) shows how a complex and release-r

HERE Technologies 32 Dec 15, 2022
A Social App Built Using FLutter SDK.

Hi ?? , I'm Faheem ??‍?? A Social App Built Using FLutter SDK. The main objective of this application is to provide a single platform for the Students

Faheem Ahmad 26 Nov 10, 2022
Flutter Video Conferencing SDK & Sample App

100ms Flutter SDK ?? Here you will find everything you need to build experiences with video using 100ms iOS/Android SDK. Dive into our SDKs, quick sta

100ms 79 Dec 22, 2022