diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml
index 107b7e977..69a600f8d 100644
--- a/example/android/app/src/main/AndroidManifest.xml
+++ b/example/android/app/src/main/AndroidManifest.xml
@@ -47,7 +47,7 @@
android:value="2" />
diff --git a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/MainActivity.kt b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/MainActivity.kt
index 7db1691e3..2e7b2a2ba 100644
--- a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/MainActivity.kt
+++ b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/MainActivity.kt
@@ -1,8 +1,8 @@
package io.agora.agora_rtc_engine_example
import android.os.Bundle
-import io.agora.agora_rtc_engine_example.custom_audio_source.CustomAudioPlugin
-import io.agora.agora_rtc_engine_example.custom_audio_source.CustomAudioSource
+import io.agora.agora_rtc_engine_example.custom_capture_audio.CustomCaptureAudioPlugin
+import io.agora.agora_rtc_engine_example.custom_capture_audio.CustomCaptureAudio
import io.agora.rtc.base.RtcEnginePlugin
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
@@ -10,25 +10,25 @@ import java.lang.ref.WeakReference
class MainActivity: FlutterActivity() {
- private val customAudioPlugin = CustomAudioPlugin(WeakReference(this))
+ private val customCaptureAudioPlugin = CustomCaptureAudioPlugin(WeakReference(this))
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- // Register the `CustomAudioPlugin` to interect with the `RtcEngine`
- RtcEnginePlugin.register(customAudioPlugin)
+ // Register the `CustomCaptureAudioPlugin` to interect with the `RtcEngine`
+ RtcEnginePlugin.register(customCaptureAudioPlugin)
}
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
- // The `CustomAudioSource` is generated by [pigeon](https://pub.dev/packages/pigeon), you can see the
+ // The `CustomCaptureAudioPlugin` is generated by [pigeon](https://pub.dev/packages/pigeon), you can see the
// the definiton on `example/lib/examples/advanced/custom_audio/custom_audio_source_api.dart`
- CustomAudioSource.CustomAudioSourceApi.setup(flutterEngine.dartExecutor, customAudioPlugin)
+ CustomCaptureAudio.CustomCaptureAudioApi.setup(flutterEngine.dartExecutor, customCaptureAudioPlugin)
}
override fun onDestroy() {
super.onDestroy()
- RtcEnginePlugin.unregister(customAudioPlugin)
+ RtcEnginePlugin.unregister(customCaptureAudioPlugin)
}
}
diff --git a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/AudioRecordService.java b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/AudioRecordService.java
similarity index 98%
rename from example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/AudioRecordService.java
rename to example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/AudioRecordService.java
index 3c3eb63c8..2731cb044 100644
--- a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/AudioRecordService.java
+++ b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/AudioRecordService.java
@@ -1,4 +1,4 @@
-package io.agora.agora_rtc_engine_example.custom_audio_source;
+package io.agora.agora_rtc_engine_example.custom_capture_audio;
import android.app.Notification;
import android.app.NotificationChannel;
diff --git a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/AudioStatus.java b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/AudioStatus.java
similarity index 52%
rename from example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/AudioStatus.java
rename to example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/AudioStatus.java
index 585f76699..bd345b059 100644
--- a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/AudioStatus.java
+++ b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/AudioStatus.java
@@ -1,4 +1,4 @@
-package io.agora.agora_rtc_engine_example.custom_audio_source;
+package io.agora.agora_rtc_engine_example.custom_capture_audio;
public enum AudioStatus {
INITIALISING,
diff --git a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/CustomAudioSource.java b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/CustomCaptureAudio.java
similarity index 84%
rename from example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/CustomAudioSource.java
rename to example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/CustomCaptureAudio.java
index 7187e865b..89faa9b12 100644
--- a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/CustomAudioSource.java
+++ b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/CustomCaptureAudio.java
@@ -1,7 +1,7 @@
-// Autogenerated from Pigeon (v1.0.7), do not edit directly.
+// Autogenerated from Pigeon (v1.0.8), do not edit directly.
// See also: https://pub.dev/packages/pigeon
-package io.agora.agora_rtc_engine_example.custom_audio_source;
+package io.agora.agora_rtc_engine_example.custom_capture_audio;
import io.flutter.plugin.common.BasicMessageChannel;
import io.flutter.plugin.common.BinaryMessenger;
@@ -17,29 +17,29 @@
/** Generated class from Pigeon. */
@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"})
-public class CustomAudioSource {
- private static class CustomAudioSourceApiCodec extends StandardMessageCodec {
- public static final CustomAudioSourceApiCodec INSTANCE = new CustomAudioSourceApiCodec();
- private CustomAudioSourceApiCodec() {}
+public class CustomCaptureAudio {
+ private static class CustomCaptureAudioApiCodec extends StandardMessageCodec {
+ public static final CustomCaptureAudioApiCodec INSTANCE = new CustomCaptureAudioApiCodec();
+ private CustomCaptureAudioApiCodec() {}
}
/** Generated interface from Pigeon that represents a handler of messages from Flutter.*/
- public interface CustomAudioSourceApi {
+ public interface CustomCaptureAudioApi {
void setExternalAudioSource(Boolean enabled, Long sampleRate, Long channels);
void setExternalAudioSourceVolume(Long sourcePos, Long volume);
void startAudioRecord(Long sampleRate, Long channels);
void stopAudioRecord();
- /** The codec used by CustomAudioSourceApi. */
+ /** The codec used by CustomCaptureAudioApi. */
static MessageCodec getCodec() {
- return CustomAudioSourceApiCodec.INSTANCE;
+ return CustomCaptureAudioApiCodec.INSTANCE;
}
- /** Sets up an instance of `CustomAudioSourceApi` to handle messages through the `binaryMessenger`. */
- static void setup(BinaryMessenger binaryMessenger, CustomAudioSourceApi api) {
+ /** Sets up an instance of `CustomCaptureAudioApi` to handle messages through the `binaryMessenger`. */
+ static void setup(BinaryMessenger binaryMessenger, CustomCaptureAudioApi api) {
{
BasicMessageChannel channel =
- new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomAudioSourceApi.setExternalAudioSource", getCodec());
+ new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomCaptureAudioApi.setExternalAudioSource", getCodec());
if (api != null) {
channel.setMessageHandler((message, reply) -> {
Map wrapped = new HashMap<>();
@@ -71,7 +71,7 @@ static void setup(BinaryMessenger binaryMessenger, CustomAudioSourceApi api) {
}
{
BasicMessageChannel channel =
- new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomAudioSourceApi.setExternalAudioSourceVolume", getCodec());
+ new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomCaptureAudioApi.setExternalAudioSourceVolume", getCodec());
if (api != null) {
channel.setMessageHandler((message, reply) -> {
Map wrapped = new HashMap<>();
@@ -99,7 +99,7 @@ static void setup(BinaryMessenger binaryMessenger, CustomAudioSourceApi api) {
}
{
BasicMessageChannel channel =
- new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomAudioSourceApi.startAudioRecord", getCodec());
+ new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomCaptureAudioApi.startAudioRecord", getCodec());
if (api != null) {
channel.setMessageHandler((message, reply) -> {
Map wrapped = new HashMap<>();
@@ -127,7 +127,7 @@ static void setup(BinaryMessenger binaryMessenger, CustomAudioSourceApi api) {
}
{
BasicMessageChannel channel =
- new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomAudioSourceApi.stopAudioRecord", getCodec());
+ new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CustomCaptureAudioApi.stopAudioRecord", getCodec());
if (api != null) {
channel.setMessageHandler((message, reply) -> {
Map wrapped = new HashMap<>();
diff --git a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/CustomAudioPlugin.kt b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/CustomCaptureAudioPlugin.kt
similarity index 91%
rename from example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/CustomAudioPlugin.kt
rename to example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/CustomCaptureAudioPlugin.kt
index 04e2a9997..ead56b6ea 100644
--- a/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_audio_source/CustomAudioPlugin.kt
+++ b/example/android/app/src/main/kotlin/io/agora/agora_rtc_engine_example/custom_capture_audio/CustomCaptureAudioPlugin.kt
@@ -1,4 +1,4 @@
-package io.agora.agora_rtc_engine_example.custom_audio_source
+package io.agora.agora_rtc_engine_example.custom_capture_audio
import android.app.Activity
import android.content.BroadcastReceiver
@@ -11,9 +11,9 @@ import io.agora.rtc.RtcEngine
import io.agora.rtc.base.RtcEnginePlugin
import java.lang.ref.WeakReference
-class CustomAudioPlugin(private val activity: WeakReference) :
+class CustomCaptureAudioPlugin(private val activity: WeakReference) :
RtcEnginePlugin,
- CustomAudioSource.CustomAudioSourceApi {
+ CustomCaptureAudio.CustomCaptureAudioApi {
private var rtcEngine: RtcEngine? = null
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj
index 192e165d6..de127bc17 100644
--- a/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/ios/Runner.xcodeproj/project.pbxproj
@@ -11,11 +11,11 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
5E9D826C4B1F29399F8A7742 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28CEF344452C45083E367B0C /* Pods_Runner.framework */; };
6D48449932DC5CD432350C00 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43CA39DDEDE840FF44D1F750 /* Pods_RunnerTests.framework */; };
- 7110181B2727DA66003816A9 /* CustomAudioSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7110181A2727DA66003816A9 /* CustomAudioSource.m */; };
711018242727DE9A003816A9 /* ExternalAudio.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7110181E2727DE9A003816A9 /* ExternalAudio.mm */; };
711018252727DE9A003816A9 /* AudioWriteToFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 711018222727DE9A003816A9 /* AudioWriteToFile.m */; };
711018262727DE9A003816A9 /* AudioController.m in Sources */ = {isa = PBXBuildFile; fileRef = 711018232727DE9A003816A9 /* AudioController.m */; };
- 711018282727E05A003816A9 /* CustmoAudioSourcePlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711018272727E05A003816A9 /* CustmoAudioSourcePlugin.swift */; };
+ 711018282727E05A003816A9 /* CustomCaptureAudioPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711018272727E05A003816A9 /* CustomCaptureAudioPlugin.swift */; };
+ 715C838B273012A30080FA35 /* CustomCaptureAudio.m in Sources */ = {isa = PBXBuildFile; fileRef = 715C8389273012A30080FA35 /* CustomCaptureAudio.m */; };
71E2A2A22722C75F00C7B7BC /* OCTestRtcEnginePlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 71E2A29E2722C75F00C7B7BC /* OCTestRtcEnginePlugin.m */; };
71E2A2A32722C75F00C7B7BC /* FakeAgoraRtcEngineKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71E2A2A02722C75F00C7B7BC /* FakeAgoraRtcEngineKit.swift */; };
71E2A2A52722C80800C7B7BC /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71E2A2A42722C80800C7B7BC /* RunnerTests.swift */; };
@@ -56,8 +56,6 @@
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
43CA39DDEDE840FF44D1F750 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
592BF9E1006B18851CF75B6B /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
- 711018192727DA66003816A9 /* CustomAudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomAudioSource.h; sourceTree = ""; };
- 7110181A2727DA66003816A9 /* CustomAudioSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomAudioSource.m; sourceTree = ""; };
7110181D2727DE9A003816A9 /* AudioOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioOptions.h; sourceTree = ""; };
7110181E2727DE9A003816A9 /* ExternalAudio.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ExternalAudio.mm; sourceTree = ""; };
7110181F2727DE9A003816A9 /* ExternalAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExternalAudio.h; sourceTree = ""; };
@@ -65,7 +63,9 @@
711018212727DE9A003816A9 /* AudioController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioController.h; sourceTree = ""; };
711018222727DE9A003816A9 /* AudioWriteToFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AudioWriteToFile.m; sourceTree = ""; };
711018232727DE9A003816A9 /* AudioController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AudioController.m; sourceTree = ""; };
- 711018272727E05A003816A9 /* CustmoAudioSourcePlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustmoAudioSourcePlugin.swift; sourceTree = ""; };
+ 711018272727E05A003816A9 /* CustomCaptureAudioPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomCaptureAudioPlugin.swift; sourceTree = ""; };
+ 715C8389273012A30080FA35 /* CustomCaptureAudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomCaptureAudio.m; sourceTree = ""; };
+ 715C838A273012A30080FA35 /* CustomCaptureAudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomCaptureAudio.h; sourceTree = ""; };
71E2A2932722C73000C7B7BC /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
71E2A29E2722C75F00C7B7BC /* OCTestRtcEnginePlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCTestRtcEnginePlugin.m; sourceTree = ""; };
71E2A29F2722C75F00C7B7BC /* OCTestRtcEnginePlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCTestRtcEnginePlugin.h; sourceTree = ""; };
@@ -130,9 +130,11 @@
name = Frameworks;
sourceTree = "";
};
- 711018292727FFF1003816A9 /* CustomAudioSource */ = {
+ 711018292727FFF1003816A9 /* CustomCaptureAudio */ = {
isa = PBXGroup;
children = (
+ 715C838A273012A30080FA35 /* CustomCaptureAudio.h */,
+ 715C8389273012A30080FA35 /* CustomCaptureAudio.m */,
711018212727DE9A003816A9 /* AudioController.h */,
711018232727DE9A003816A9 /* AudioController.m */,
7110181D2727DE9A003816A9 /* AudioOptions.h */,
@@ -140,11 +142,9 @@
711018222727DE9A003816A9 /* AudioWriteToFile.m */,
7110181F2727DE9A003816A9 /* ExternalAudio.h */,
7110181E2727DE9A003816A9 /* ExternalAudio.mm */,
- 711018192727DA66003816A9 /* CustomAudioSource.h */,
- 7110181A2727DA66003816A9 /* CustomAudioSource.m */,
- 711018272727E05A003816A9 /* CustmoAudioSourcePlugin.swift */,
+ 711018272727E05A003816A9 /* CustomCaptureAudioPlugin.swift */,
);
- path = CustomAudioSource;
+ path = CustomCaptureAudio;
sourceTree = "";
};
71E2A2942722C73000C7B7BC /* RunnerTests */ = {
@@ -194,7 +194,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
- 711018292727FFF1003816A9 /* CustomAudioSource */,
+ 711018292727FFF1003816A9 /* CustomCaptureAudio */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
@@ -427,11 +427,11 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 715C838B273012A30080FA35 /* CustomCaptureAudio.m in Sources */,
711018262727DE9A003816A9 /* AudioController.m in Sources */,
- 7110181B2727DA66003816A9 /* CustomAudioSource.m in Sources */,
711018252727DE9A003816A9 /* AudioWriteToFile.m in Sources */,
711018242727DE9A003816A9 /* ExternalAudio.mm in Sources */,
- 711018282727E05A003816A9 /* CustmoAudioSourcePlugin.swift in Sources */,
+ 711018282727E05A003816A9 /* CustomCaptureAudioPlugin.swift in Sources */,
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
diff --git a/example/ios/Runner/AppDelegate.swift b/example/ios/Runner/AppDelegate.swift
index 488acd686..6bc4c09ca 100644
--- a/example/ios/Runner/AppDelegate.swift
+++ b/example/ios/Runner/AppDelegate.swift
@@ -4,7 +4,7 @@ import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
- private var customAudioSourcePlugin: CustomAudioPlugin!
+ private var customCaptureAudioPlugin: CustomCaptureAudioPlugin!
override func application(
_ application: UIApplication,
@@ -12,15 +12,15 @@ import Flutter
) -> Bool {
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
- customAudioSourcePlugin = CustomAudioPlugin()
+ customCaptureAudioPlugin = CustomCaptureAudioPlugin()
// The `CustomAudioSourceApiSetup` is generated by [pigeon](https://pub.dev/packages/pigeon), you can see the
- // the definiton on `example/lib/examples/advanced/custom_audio/custom_audio_source_api.dart`
- CustomAudioSourceApiSetup(
- controller.binaryMessenger, customAudioSourcePlugin)
+ // the definiton on `example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.dart`
+ CustomCaptureAudioApiSetup(
+ controller.binaryMessenger, customCaptureAudioPlugin)
// Register the `CustomAudioPlugin` to interect with the `AgoraRtcEngineKit`
- RtcEnginePluginRegistrant.register(customAudioSourcePlugin)
+ RtcEnginePluginRegistrant.register(customCaptureAudioPlugin)
GeneratedPluginRegistrant.register(with: self)
@@ -28,6 +28,6 @@ import Flutter
}
override func applicationWillTerminate(_ application: UIApplication) {
- RtcEnginePluginRegistrant.unregister(customAudioSourcePlugin)
+ RtcEnginePluginRegistrant.unregister(customCaptureAudioPlugin)
}
}
diff --git a/example/ios/Runner/CustomAudioSource/AudioController.h b/example/ios/Runner/CustomCaptureAudio/AudioController.h
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/AudioController.h
rename to example/ios/Runner/CustomCaptureAudio/AudioController.h
diff --git a/example/ios/Runner/CustomAudioSource/AudioController.m b/example/ios/Runner/CustomCaptureAudio/AudioController.m
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/AudioController.m
rename to example/ios/Runner/CustomCaptureAudio/AudioController.m
diff --git a/example/ios/Runner/CustomAudioSource/AudioOptions.h b/example/ios/Runner/CustomCaptureAudio/AudioOptions.h
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/AudioOptions.h
rename to example/ios/Runner/CustomCaptureAudio/AudioOptions.h
diff --git a/example/ios/Runner/CustomAudioSource/AudioWriteToFile.h b/example/ios/Runner/CustomCaptureAudio/AudioWriteToFile.h
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/AudioWriteToFile.h
rename to example/ios/Runner/CustomCaptureAudio/AudioWriteToFile.h
diff --git a/example/ios/Runner/CustomAudioSource/AudioWriteToFile.m b/example/ios/Runner/CustomCaptureAudio/AudioWriteToFile.m
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/AudioWriteToFile.m
rename to example/ios/Runner/CustomCaptureAudio/AudioWriteToFile.m
diff --git a/example/ios/Runner/CustomAudioSource/CustomAudioSource.h b/example/ios/Runner/CustomCaptureAudio/CustomCaptureAudio.h
similarity index 69%
rename from example/ios/Runner/CustomAudioSource/CustomAudioSource.h
rename to example/ios/Runner/CustomCaptureAudio/CustomCaptureAudio.h
index 100e08867..7c754bc05 100644
--- a/example/ios/Runner/CustomAudioSource/CustomAudioSource.h
+++ b/example/ios/Runner/CustomCaptureAudio/CustomCaptureAudio.h
@@ -1,4 +1,4 @@
-// Autogenerated from Pigeon (v1.0.7), do not edit directly.
+// Autogenerated from Pigeon (v1.0.8), do not edit directly.
// See also: https://pub.dev/packages/pigeon
#import
@protocol FlutterBinaryMessenger;
@@ -9,16 +9,16 @@
NS_ASSUME_NONNULL_BEGIN
-/// The codec used by CustomAudioSourceApi.
-NSObject *CustomAudioSourceApiGetCodec(void);
+/// The codec used by CustomCaptureAudioApi.
+NSObject *CustomCaptureAudioApiGetCodec(void);
-@protocol CustomAudioSourceApi
+@protocol CustomCaptureAudioApi
- (void)setExternalAudioSourceEnabled:(NSNumber *)enabled sampleRate:(NSNumber *)sampleRate channels:(NSNumber *)channels error:(FlutterError *_Nullable *_Nonnull)error;
- (void)setExternalAudioSourceVolumeSourcePos:(NSNumber *)sourcePos volume:(NSNumber *)volume error:(FlutterError *_Nullable *_Nonnull)error;
- (void)startAudioRecordSampleRate:(NSNumber *)sampleRate channels:(NSNumber *)channels error:(FlutterError *_Nullable *_Nonnull)error;
- (void)stopAudioRecordWithError:(FlutterError *_Nullable *_Nonnull)error;
@end
-extern void CustomAudioSourceApiSetup(id binaryMessenger, NSObject *_Nullable api);
+extern void CustomCaptureAudioApiSetup(id binaryMessenger, NSObject *_Nullable api);
NS_ASSUME_NONNULL_END
diff --git a/example/ios/Runner/CustomAudioSource/CustomAudioSource.m b/example/ios/Runner/CustomCaptureAudio/CustomCaptureAudio.m
similarity index 62%
rename from example/ios/Runner/CustomAudioSource/CustomAudioSource.m
rename to example/ios/Runner/CustomCaptureAudio/CustomCaptureAudio.m
index 573fd6e9e..8f4f62ec1 100644
--- a/example/ios/Runner/CustomAudioSource/CustomAudioSource.m
+++ b/example/ios/Runner/CustomCaptureAudio/CustomCaptureAudio.m
@@ -1,6 +1,6 @@
-// Autogenerated from Pigeon (v1.0.7), do not edit directly.
+// Autogenerated from Pigeon (v1.0.8), do not edit directly.
// See also: https://pub.dev/packages/pigeon
-#import "CustomAudioSource.h"
+#import "CustomCaptureAudio.h"
#import
#if !__has_feature(objc_arc)
@@ -23,47 +23,47 @@
}
-@interface CustomAudioSourceApiCodecReader : FlutterStandardReader
+@interface CustomCaptureAudioApiCodecReader : FlutterStandardReader
@end
-@implementation CustomAudioSourceApiCodecReader
+@implementation CustomCaptureAudioApiCodecReader
@end
-@interface CustomAudioSourceApiCodecWriter : FlutterStandardWriter
+@interface CustomCaptureAudioApiCodecWriter : FlutterStandardWriter
@end
-@implementation CustomAudioSourceApiCodecWriter
+@implementation CustomCaptureAudioApiCodecWriter
@end
-@interface CustomAudioSourceApiCodecReaderWriter : FlutterStandardReaderWriter
+@interface CustomCaptureAudioApiCodecReaderWriter : FlutterStandardReaderWriter
@end
-@implementation CustomAudioSourceApiCodecReaderWriter
+@implementation CustomCaptureAudioApiCodecReaderWriter
- (FlutterStandardWriter *)writerWithData:(NSMutableData *)data {
- return [[CustomAudioSourceApiCodecWriter alloc] initWithData:data];
+ return [[CustomCaptureAudioApiCodecWriter alloc] initWithData:data];
}
- (FlutterStandardReader *)readerWithData:(NSData *)data {
- return [[CustomAudioSourceApiCodecReader alloc] initWithData:data];
+ return [[CustomCaptureAudioApiCodecReader alloc] initWithData:data];
}
@end
-NSObject *CustomAudioSourceApiGetCodec() {
+NSObject *CustomCaptureAudioApiGetCodec() {
static dispatch_once_t s_pred = 0;
static FlutterStandardMessageCodec *s_sharedObject = nil;
dispatch_once(&s_pred, ^{
- CustomAudioSourceApiCodecReaderWriter *readerWriter = [[CustomAudioSourceApiCodecReaderWriter alloc] init];
+ CustomCaptureAudioApiCodecReaderWriter *readerWriter = [[CustomCaptureAudioApiCodecReaderWriter alloc] init];
s_sharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter];
});
return s_sharedObject;
}
-void CustomAudioSourceApiSetup(id binaryMessenger, NSObject *api) {
+void CustomCaptureAudioApiSetup(id binaryMessenger, NSObject *api) {
{
FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel
- messageChannelWithName:@"dev.flutter.pigeon.CustomAudioSourceApi.setExternalAudioSource"
+ messageChannelWithName:@"dev.flutter.pigeon.CustomCaptureAudioApi.setExternalAudioSource"
binaryMessenger:binaryMessenger
- codec:CustomAudioSourceApiGetCodec()];
+ codec:CustomCaptureAudioApiGetCodec()];
if (api) {
- NSCAssert([api respondsToSelector:@selector(setExternalAudioSourceEnabled:sampleRate:channels:error:)], @"CustomAudioSourceApi api (%@) doesn't respond to @selector(setExternalAudioSourceEnabled:sampleRate:channels:error:)", api);
+ NSCAssert([api respondsToSelector:@selector(setExternalAudioSourceEnabled:sampleRate:channels:error:)], @"CustomCaptureAudioApi api (%@) doesn't respond to @selector(setExternalAudioSourceEnabled:sampleRate:channels:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_enabled = args[0];
@@ -81,11 +81,11 @@ void CustomAudioSourceApiSetup(id binaryMessenger, NSObj
{
FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel
- messageChannelWithName:@"dev.flutter.pigeon.CustomAudioSourceApi.setExternalAudioSourceVolume"
+ messageChannelWithName:@"dev.flutter.pigeon.CustomCaptureAudioApi.setExternalAudioSourceVolume"
binaryMessenger:binaryMessenger
- codec:CustomAudioSourceApiGetCodec()];
+ codec:CustomCaptureAudioApiGetCodec()];
if (api) {
- NSCAssert([api respondsToSelector:@selector(setExternalAudioSourceVolumeSourcePos:volume:error:)], @"CustomAudioSourceApi api (%@) doesn't respond to @selector(setExternalAudioSourceVolumeSourcePos:volume:error:)", api);
+ NSCAssert([api respondsToSelector:@selector(setExternalAudioSourceVolumeSourcePos:volume:error:)], @"CustomCaptureAudioApi api (%@) doesn't respond to @selector(setExternalAudioSourceVolumeSourcePos:volume:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_sourcePos = args[0];
@@ -102,11 +102,11 @@ void CustomAudioSourceApiSetup(id binaryMessenger, NSObj
{
FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel
- messageChannelWithName:@"dev.flutter.pigeon.CustomAudioSourceApi.startAudioRecord"
+ messageChannelWithName:@"dev.flutter.pigeon.CustomCaptureAudioApi.startAudioRecord"
binaryMessenger:binaryMessenger
- codec:CustomAudioSourceApiGetCodec()];
+ codec:CustomCaptureAudioApiGetCodec()];
if (api) {
- NSCAssert([api respondsToSelector:@selector(startAudioRecordSampleRate:channels:error:)], @"CustomAudioSourceApi api (%@) doesn't respond to @selector(startAudioRecordSampleRate:channels:error:)", api);
+ NSCAssert([api respondsToSelector:@selector(startAudioRecordSampleRate:channels:error:)], @"CustomCaptureAudioApi api (%@) doesn't respond to @selector(startAudioRecordSampleRate:channels:error:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
NSArray *args = message;
NSNumber *arg_sampleRate = args[0];
@@ -123,11 +123,11 @@ void CustomAudioSourceApiSetup(id binaryMessenger, NSObj
{
FlutterBasicMessageChannel *channel =
[FlutterBasicMessageChannel
- messageChannelWithName:@"dev.flutter.pigeon.CustomAudioSourceApi.stopAudioRecord"
+ messageChannelWithName:@"dev.flutter.pigeon.CustomCaptureAudioApi.stopAudioRecord"
binaryMessenger:binaryMessenger
- codec:CustomAudioSourceApiGetCodec()];
+ codec:CustomCaptureAudioApiGetCodec()];
if (api) {
- NSCAssert([api respondsToSelector:@selector(stopAudioRecordWithError:)], @"CustomAudioSourceApi api (%@) doesn't respond to @selector(stopAudioRecordWithError:)", api);
+ NSCAssert([api respondsToSelector:@selector(stopAudioRecordWithError:)], @"CustomCaptureAudioApi api (%@) doesn't respond to @selector(stopAudioRecordWithError:)", api);
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
FlutterError *error;
[api stopAudioRecordWithError:&error];
diff --git a/example/ios/Runner/CustomAudioSource/CustmoAudioSourcePlugin.swift b/example/ios/Runner/CustomCaptureAudio/CustomCaptureAudioPlugin.swift
similarity index 95%
rename from example/ios/Runner/CustomAudioSource/CustmoAudioSourcePlugin.swift
rename to example/ios/Runner/CustomCaptureAudio/CustomCaptureAudioPlugin.swift
index 092eeffc0..aa17b14fa 100644
--- a/example/ios/Runner/CustomAudioSource/CustmoAudioSourcePlugin.swift
+++ b/example/ios/Runner/CustomCaptureAudio/CustomCaptureAudioPlugin.swift
@@ -1,7 +1,7 @@
import Foundation
import agora_rtc_engine
-class CustomAudioPlugin : NSObject, RtcEnginePlugin, CustomAudioSourceApi {
+class CustomCaptureAudioPlugin : NSObject, RtcEnginePlugin, CustomCaptureAudioApi {
private var agoraRtcEngineKit: AgoraRtcEngineKit? = nil
diff --git a/example/ios/Runner/CustomAudioSource/ExternalAudio.h b/example/ios/Runner/CustomCaptureAudio/ExternalAudio.h
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/ExternalAudio.h
rename to example/ios/Runner/CustomCaptureAudio/ExternalAudio.h
diff --git a/example/ios/Runner/CustomAudioSource/ExternalAudio.mm b/example/ios/Runner/CustomCaptureAudio/ExternalAudio.mm
similarity index 100%
rename from example/ios/Runner/CustomAudioSource/ExternalAudio.mm
rename to example/ios/Runner/CustomCaptureAudio/ExternalAudio.mm
diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/example/ios/Runner/Runner-Bridging-Header.h
index 4127e4215..ebe17a1b2 100644
--- a/example/ios/Runner/Runner-Bridging-Header.h
+++ b/example/ios/Runner/Runner-Bridging-Header.h
@@ -7,7 +7,7 @@
#import
#endif
-#import "CustomAudioSource.h"
+#import "CustomCaptureAudio.h"
#import "ExternalAudio.h"
diff --git a/example/lib/examples/advanced/media_channel_relay.dart b/example/lib/examples/advanced/channel_media_relay/media_channel_relay.dart
similarity index 100%
rename from example/lib/examples/advanced/media_channel_relay.dart
rename to example/lib/examples/advanced/channel_media_relay/media_channel_relay.dart
diff --git a/example/lib/examples/advanced/custom_audio/custom_audio_source.dart b/example/lib/examples/advanced/custom_capture_audio/custom_capture_audio.dart
similarity index 96%
rename from example/lib/examples/advanced/custom_audio/custom_audio_source.dart
rename to example/lib/examples/advanced/custom_capture_audio/custom_capture_audio.dart
index 0c76cb476..b8abc8974 100644
--- a/example/lib/examples/advanced/custom_audio/custom_audio_source.dart
+++ b/example/lib/examples/advanced/custom_capture_audio/custom_capture_audio.dart
@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:permission_handler/permission_handler.dart';
-import 'custom_audio_source_api.generated.dart';
+import 'custom_capture_audio_api.generated.dart';
const int _defaultSampleRate = 16000;
const int _defaultChannelCount = 1;
@@ -42,14 +42,14 @@ extension AudioExternalSourcePosExt on AudioExternalSourcePos {
}
}
-/// CustomAudioSource Example
-class CustomAudioSource extends StatefulWidget {
+/// CustomCaptureAudio Example
+class CustomCaptureAudio extends StatefulWidget {
@override
- _CustomAudioSourceState createState() => _CustomAudioSourceState();
+ _CustomCaptureAudioState createState() => _CustomCaptureAudioState();
}
-class _CustomAudioSourceState extends State {
- final CustomAudioSourceApi _api = CustomAudioSourceApi();
+class _CustomCaptureAudioState extends State {
+ final CustomCaptureAudioApi _api = CustomCaptureAudioApi();
bool _isJoined = false;
bool _isMute = false;
double _playoutSliderValue = 100.0;
diff --git a/example/lib/examples/advanced/custom_audio/custom_audio_source_api.dart b/example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.dart
similarity index 87%
rename from example/lib/examples/advanced/custom_audio/custom_audio_source_api.dart
rename to example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.dart
index 7f97a2b76..ed1efe4b0 100644
--- a/example/lib/examples/advanced/custom_audio/custom_audio_source_api.dart
+++ b/example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.dart
@@ -1,8 +1,8 @@
import 'package:pigeon/pigeon.dart';
-/// CustomAudioSource API definition
+/// CustomCaptureAudio API definition
@HostApi()
-abstract class CustomAudioSourceApi {
+abstract class CustomCaptureAudioApi {
/// A binding function for setExternalAudioSource on Android/iOS
void setExternalAudioSource(bool enabled, int sampleRate, int channels);
diff --git a/example/lib/examples/advanced/custom_audio/custom_audio_source_api.generated.dart b/example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.generated.dart
similarity index 81%
rename from example/lib/examples/advanced/custom_audio/custom_audio_source_api.generated.dart
rename to example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.generated.dart
index 7a710a1d3..edb647ea5 100644
--- a/example/lib/examples/advanced/custom_audio/custom_audio_source_api.generated.dart
+++ b/example/lib/examples/advanced/custom_capture_audio/custom_capture_audio_api.generated.dart
@@ -1,4 +1,4 @@
-// Autogenerated from Pigeon (v1.0.7), do not edit directly.
+// Autogenerated from Pigeon (v1.0.8), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name
// @dart = 2.12
@@ -8,23 +8,23 @@ import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List;
import 'package:flutter/foundation.dart' show WriteBuffer, ReadBuffer;
import 'package:flutter/services.dart';
-class _CustomAudioSourceApiCodec extends StandardMessageCodec {
- const _CustomAudioSourceApiCodec();
+class _CustomCaptureAudioApiCodec extends StandardMessageCodec {
+ const _CustomCaptureAudioApiCodec();
}
-class CustomAudioSourceApi {
- /// Constructor for [CustomAudioSourceApi]. The [binaryMessenger] named argument is
+class CustomCaptureAudioApi {
+ /// Constructor for [CustomCaptureAudioApi]. The [binaryMessenger] named argument is
/// available for dependency injection. If it is left null, the default
/// BinaryMessenger will be used which routes to the host platform.
- CustomAudioSourceApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger;
+ CustomCaptureAudioApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger;
final BinaryMessenger? _binaryMessenger;
- static const MessageCodec codec = _CustomAudioSourceApiCodec();
+ static const MessageCodec codec = _CustomCaptureAudioApiCodec();
Future setExternalAudioSource(bool arg_enabled, int arg_sampleRate, int arg_channels) async {
final BasicMessageChannel channel = BasicMessageChannel(
- 'dev.flutter.pigeon.CustomAudioSourceApi.setExternalAudioSource', codec, binaryMessenger: _binaryMessenger);
+ 'dev.flutter.pigeon.CustomCaptureAudioApi.setExternalAudioSource', codec, binaryMessenger: _binaryMessenger);
final Map? replyMap =
await channel.send([arg_enabled, arg_sampleRate, arg_channels]) as Map?;
if (replyMap == null) {
@@ -47,7 +47,7 @@ class CustomAudioSourceApi {
Future setExternalAudioSourceVolume(int arg_sourcePos, int arg_volume) async {
final BasicMessageChannel channel = BasicMessageChannel(
- 'dev.flutter.pigeon.CustomAudioSourceApi.setExternalAudioSourceVolume', codec, binaryMessenger: _binaryMessenger);
+ 'dev.flutter.pigeon.CustomCaptureAudioApi.setExternalAudioSourceVolume', codec, binaryMessenger: _binaryMessenger);
final Map? replyMap =
await channel.send([arg_sourcePos, arg_volume]) as Map?;
if (replyMap == null) {
@@ -70,7 +70,7 @@ class CustomAudioSourceApi {
Future startAudioRecord(int arg_sampleRate, int arg_channels) async {
final BasicMessageChannel channel = BasicMessageChannel(
- 'dev.flutter.pigeon.CustomAudioSourceApi.startAudioRecord', codec, binaryMessenger: _binaryMessenger);
+ 'dev.flutter.pigeon.CustomCaptureAudioApi.startAudioRecord', codec, binaryMessenger: _binaryMessenger);
final Map? replyMap =
await channel.send([arg_sampleRate, arg_channels]) as Map?;
if (replyMap == null) {
@@ -93,7 +93,7 @@ class CustomAudioSourceApi {
Future stopAudioRecord() async {
final BasicMessageChannel channel = BasicMessageChannel(
- 'dev.flutter.pigeon.CustomAudioSourceApi.stopAudioRecord', codec, binaryMessenger: _binaryMessenger);
+ 'dev.flutter.pigeon.CustomCaptureAudioApi.stopAudioRecord', codec, binaryMessenger: _binaryMessenger);
final Map? replyMap =
await channel.send(null) as Map?;
if (replyMap == null) {
diff --git a/example/lib/examples/advanced/index.dart b/example/lib/examples/advanced/index.dart
index 555b8a079..acffd1ed3 100644
--- a/example/lib/examples/advanced/index.dart
+++ b/example/lib/examples/advanced/index.dart
@@ -1,23 +1,22 @@
-import 'package:agora_rtc_engine_example/examples/advanced/create_stream_data.dart';
-import 'package:agora_rtc_engine_example/examples/advanced/custom_audio/custom_audio_source.dart';
-import 'package:agora_rtc_engine_example/examples/advanced/live_streaming.dart';
-import 'package:agora_rtc_engine_example/examples/advanced/media_channel_relay.dart';
-import 'package:agora_rtc_engine_example/examples/advanced/multi_channel.dart';
-import 'package:agora_rtc_engine_example/examples/advanced/voice_change.dart';
+import 'package:agora_rtc_engine_example/examples/advanced/stream_message/stream_message.dart';
+import 'package:agora_rtc_engine_example/examples/advanced/channel_media_relay/media_channel_relay.dart';
+import 'package:agora_rtc_engine_example/examples/advanced/join_multiple_channel/join_multi_channel.dart';
+import 'package:agora_rtc_engine_example/examples/advanced/voice_changer/voice_changer.dart';
+
+import 'custom_capture_audio/custom_capture_audio.dart';
/// Data source for advanced examples
final Advanced = [
{'name': 'Advanced'},
- {'name': 'MultiChannel', 'widget': MultiChannel()},
- {'name': 'LiveStreaming', 'widget': LiveStreaming()},
+ {'name': 'JoinMultiChannel', 'widget': JoinMultiChannel()},
{
- 'name': 'CreateStreamData',
- 'widget': CreateStreamData(),
+ 'name': 'StreamMessage',
+ 'widget': StreamMessage(),
},
{
'name': 'MediaChannelRelay',
'widget': MediaChannelRelay(),
},
- {'name': 'VoiceChange', 'widget': VoiceChange()},
- {'name': 'CustomAudioSource', 'widget': CustomAudioSource()},
+ {'name': 'VoiceChanger', 'widget': VoiceChanger()},
+ {'name': 'CustomCaptureAudio', 'widget': CustomCaptureAudio()},
];
diff --git a/example/lib/examples/advanced/multi_channel.dart b/example/lib/examples/advanced/join_multiple_channel/join_multi_channel.dart
similarity index 98%
rename from example/lib/examples/advanced/multi_channel.dart
rename to example/lib/examples/advanced/join_multiple_channel/join_multi_channel.dart
index a3bd31c07..5e5f2fd28 100644
--- a/example/lib/examples/advanced/multi_channel.dart
+++ b/example/lib/examples/advanced/join_multiple_channel/join_multi_channel.dart
@@ -13,13 +13,13 @@ import 'package:permission_handler/permission_handler.dart';
const _channelId0 = 'channel0';
const _channelId1 = 'channel1';
-/// MultiChannel Example
-class MultiChannel extends StatefulWidget {
+/// JoinMultiChannel Example
+class JoinMultiChannel extends StatefulWidget {
@override
State createState() => _State();
}
-class _State extends State {
+class _State extends State {
late final RtcEngine _engine;
late final RtcChannel _channel0, _channel1;
String? renderChannelId;
diff --git a/example/lib/examples/advanced/live_streaming.dart b/example/lib/examples/advanced/live_streaming.dart
deleted file mode 100644
index b109dc364..000000000
--- a/example/lib/examples/advanced/live_streaming.dart
+++ /dev/null
@@ -1,237 +0,0 @@
-import 'dart:developer';
-
-import 'package:agora_rtc_engine/rtc_engine.dart';
-import 'package:agora_rtc_engine/rtc_local_view.dart' as RtcLocalView;
-import 'package:agora_rtc_engine/rtc_remote_view.dart' as RtcRemoteView;
-import 'package:agora_rtc_engine_example/config/agora.config.dart' as config;
-import 'package:flutter/cupertino.dart';
-import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter/scheduler.dart';
-import 'package:permission_handler/permission_handler.dart';
-
-/// LiveStreaming Example
-class LiveStreaming extends StatefulWidget {
- @override
- State createState() => _State();
-}
-
-class _State extends State {
- late final RtcEngine _engine;
- bool isJoined = false;
- ClientRole role = ClientRole.Audience;
- int? remoteUid;
- bool isLowAudio = true;
-
- @override
- void initState() {
- super.initState();
- SchedulerBinding.instance?.addPostFrameCallback((timeStamp) {
- _showMyDialog();
- });
- }
-
- @override
- void dispose() {
- super.dispose();
- _engine.destroy();
- }
-
- Future _showMyDialog() async {
- return showDialog(
- context: context,
- barrierDismissible: false, // user must tap button!
- builder: (BuildContext context) {
- return AlertDialog(
- title: Text('AlertDialog Title'),
- content: SingleChildScrollView(
- child: ListBody(
- children: [Text('Please choose role')],
- ),
- ),
- actions: [
- TextButton(
- child: Text('Broadcaster'),
- onPressed: () {
- this.setState(() {
- role = ClientRole.Broadcaster;
- Navigator.of(context).pop();
- });
- },
- ),
- TextButton(
- child: Text('Audience'),
- onPressed: () {
- this.setState(() {
- role = ClientRole.Audience;
- Navigator.of(context).pop();
- });
- },
- ),
- ],
- );
- },
- );
- }
-
- _initEngine() async {
- if (defaultTargetPlatform == TargetPlatform.android) {
- await Permission.microphone.request();
- }
- _engine = await RtcEngine.createWithContext(RtcEngineContext(config.appId));
-
- this._addListener();
-
- // enable video module and set up video encoding configs
- await _engine.enableVideo();
-
- // make this room live broadcasting room
- await _engine.setChannelProfile(ChannelProfile.LiveBroadcasting);
- await this._updateClientRole(role);
-
- // Set audio route to speaker
- await _engine.setDefaultAudioRoutetoSpeakerphone(true);
-
- // start joining channel
- // 1. Users can only see each other after they join the
- // same channel successfully using the same app id.
- // 2. If app certificate is turned on at dashboard, token is needed
- // when joining channel. The channel name and uid used to calculate
- // the token has to match the ones used for channel join
- await _engine.joinChannel(config.token, config.channelId, null, 0, null);
- }
-
- _addListener() {
- _engine.setEventHandler(RtcEngineEventHandler(warning: (warningCode) {
- log('Warning ${warningCode}');
- }, error: (errorCode) {
- log('Warning ${errorCode}');
- }, joinChannelSuccess: (channel, uid, elapsed) {
- log('joinChannelSuccess ${channel} ${uid} ${elapsed}');
- setState(() {
- isJoined = true;
- });
- }, userJoined: (uid, elapsed) {
- log('userJoined $uid $elapsed');
- this.setState(() {
- remoteUid = uid;
- });
- }, userOffline: (uid, reason) {
- log('userOffline $uid $reason');
- this.setState(() {
- remoteUid = null;
- });
- }));
- }
-
- _updateClientRole(ClientRole role) async {
- var option;
- if (role == ClientRole.Broadcaster) {
- await _engine.setVideoEncoderConfiguration(VideoEncoderConfiguration(
- dimensions: VideoDimensions(width: 640, height: 360),
- frameRate: VideoFrameRate.Fps30,
- orientationMode: VideoOutputOrientationMode.Adaptative));
- // enable camera/mic, this will bring up permission dialog for first time
- await _engine.enableLocalAudio(true);
- await _engine.enableLocalVideo(true);
- } else {
- // You have to provide client role options if set to audience
- option = ClientRoleOptions(
- audienceLatencyLevel: isLowAudio
- ? AudienceLatencyLevelType.LowLatency
- : AudienceLatencyLevelType.UltraLowLatency);
- }
- await _engine.setClientRole(role, option);
- }
-
- _onPressToggleRole() {
- this.setState(() {
- role = role == ClientRole.Audience
- ? ClientRole.Broadcaster
- : ClientRole.Audience;
- _updateClientRole(role);
- });
- }
-
- _onPressToggleLatencyLevel(value) {
- this.setState(() {
- isLowAudio = !isLowAudio;
- _engine.setClientRole(
- ClientRole.Audience,
- ClientRoleOptions(
- audienceLatencyLevel: isLowAudio
- ? AudienceLatencyLevelType.LowLatency
- : AudienceLatencyLevelType.UltraLowLatency));
- });
- }
-
- _renderToolBar() {
- return Positioned(
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- ElevatedButton(
- child: Text('Toggle Role'),
- onPressed: _onPressToggleRole,
- ),
- Container(
- color: Colors.white,
- child: Row(mainAxisSize: MainAxisSize.min, children: [
- Text('Toggle Audience Latency Level'),
- Switch(
- value: isLowAudio,
- onChanged: _onPressToggleLatencyLevel,
- activeTrackColor: Colors.grey[350],
- activeColor: Colors.white,
- ),
- ]),
- )
- ],
- ),
- left: 10,
- bottom: 10,
- );
- }
-
- @override
- Widget build(BuildContext context) {
- return Stack(
- children: [
- Column(
- children: [
- Row(
- children: [
- if (!isJoined)
- Expanded(
- flex: 1,
- child: ElevatedButton(
- onPressed: _initEngine,
- child: Text('Join channel'),
- ),
- )
- ],
- ),
- if (isJoined) _renderVideo(),
- ],
- ),
- if (isJoined) _renderToolBar(),
- ],
- );
- }
-
- _renderVideo() {
- return Expanded(
- child: Stack(
- children: [
- role == ClientRole.Broadcaster
- ? RtcLocalView.SurfaceView()
- : remoteUid != null
- ? RtcRemoteView.SurfaceView(
- uid: remoteUid!,
- )
- : Container()
- ],
- ),
- );
- }
-}
diff --git a/example/lib/examples/advanced/create_stream_data.dart b/example/lib/examples/advanced/stream_message/stream_message.dart
similarity index 97%
rename from example/lib/examples/advanced/create_stream_data.dart
rename to example/lib/examples/advanced/stream_message/stream_message.dart
index 049fb8366..f828fb0f0 100644
--- a/example/lib/examples/advanced/create_stream_data.dart
+++ b/example/lib/examples/advanced/stream_message/stream_message.dart
@@ -9,13 +9,13 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
-/// CreateStreamData Example
-class CreateStreamData extends StatefulWidget {
+/// StreamMessage Example
+class StreamMessage extends StatefulWidget {
@override
State createState() => _State();
}
-class _State extends State {
+class _State extends State {
late final RtcEngine _engine;
bool isJoined = false;
int? remoteUid;
diff --git a/example/lib/examples/config/voice_changer.config.dart b/example/lib/examples/advanced/voice_changer/voice_changer.config.dart
similarity index 100%
rename from example/lib/examples/config/voice_changer.config.dart
rename to example/lib/examples/advanced/voice_changer/voice_changer.config.dart
diff --git a/example/lib/examples/advanced/voice_change.dart b/example/lib/examples/advanced/voice_changer/voice_changer.dart
similarity index 98%
rename from example/lib/examples/advanced/voice_change.dart
rename to example/lib/examples/advanced/voice_changer/voice_changer.dart
index b51c9cfca..b0cffe006 100644
--- a/example/lib/examples/advanced/voice_change.dart
+++ b/example/lib/examples/advanced/voice_changer/voice_changer.dart
@@ -2,19 +2,19 @@ import 'dart:developer';
import 'package:agora_rtc_engine/rtc_engine.dart';
import 'package:agora_rtc_engine_example/config/agora.config.dart' as config;
-import 'package:agora_rtc_engine_example/examples/config/voice_changer.config.dart';
+import 'package:agora_rtc_engine_example/examples/advanced/voice_changer/voice_changer.config.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
-/// VoiceChange Example
-class VoiceChange extends StatefulWidget {
+/// VoiceChanger Example
+class VoiceChanger extends StatefulWidget {
@override
State createState() => _State();
}
-class _State extends State {
+class _State extends State {
late final RtcEngine _engine;
bool isJoined = false;
List remoteUids = [];
diff --git a/example/lib/examples/basic/index.dart b/example/lib/examples/basic/index.dart
index 3db05577a..ce4fe7658 100644
--- a/example/lib/examples/basic/index.dart
+++ b/example/lib/examples/basic/index.dart
@@ -1,6 +1,6 @@
-import 'package:agora_rtc_engine_example/examples/basic/join_channel_audio.dart';
-import 'package:agora_rtc_engine_example/examples/basic/join_channel_video.dart';
-import 'package:agora_rtc_engine_example/examples/basic/string_uid.dart';
+import 'package:agora_rtc_engine_example/examples/basic/join_channel_audio/join_channel_audio.dart';
+import 'package:agora_rtc_engine_example/examples/basic/join_channel_video/join_channel_video.dart';
+import 'package:agora_rtc_engine_example/examples/basic/string_uid/string_uid.dart';
/// Data source for basic examples
final Basic = [
diff --git a/example/lib/examples/basic/join_channel_audio.dart b/example/lib/examples/basic/join_channel_audio/join_channel_audio.dart
similarity index 100%
rename from example/lib/examples/basic/join_channel_audio.dart
rename to example/lib/examples/basic/join_channel_audio/join_channel_audio.dart
diff --git a/example/lib/examples/basic/join_channel_video.dart b/example/lib/examples/basic/join_channel_video/join_channel_video.dart
similarity index 100%
rename from example/lib/examples/basic/join_channel_video.dart
rename to example/lib/examples/basic/join_channel_video/join_channel_video.dart
diff --git a/example/lib/examples/basic/string_uid.dart b/example/lib/examples/basic/string_uid/string_uid.dart
similarity index 100%
rename from example/lib/examples/basic/string_uid.dart
rename to example/lib/examples/basic/string_uid/string_uid.dart