diff --git a/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LiblinphoneFlutterPlugin.kt b/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LiblinphoneFlutterPlugin.kt index ca24681..2edd74f 100644 --- a/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LiblinphoneFlutterPlugin.kt +++ b/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LiblinphoneFlutterPlugin.kt @@ -227,6 +227,21 @@ class LiblinphoneFlutterPlugin : FlutterPlugin, ActivityAware, MethodCallHandler result.success(linphoneBridge.getMicGain()) } + "setPlaybackGain" -> { + try { + val level = call.argument("level")!! + linphoneBridge.setPlaybackGain(level) + result.success(true) + } catch (e: Exception) { + Log.e(TAG, "setPlaybackGain: ${e.message}") + result.error("error", e.message, e) + } + } + + "getPlaybackGain" -> { + result.success(linphoneBridge.getPlaybackGain()) + } + else -> { result.notImplemented() } diff --git a/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LinphoneBridge.kt b/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LinphoneBridge.kt index 4b4ceab..7fc8fa9 100644 --- a/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LinphoneBridge.kt +++ b/android/src/main/kotlin/xyz/nuark/liblinphone_flutter/LinphoneBridge.kt @@ -384,4 +384,12 @@ class LinphoneBridge( fun getMicGain(): Float { return core.getMicGainDb() } + + fun setPlaybackGain(level: Float) { + core.setPlaybackGainDb(level) + } + + fun getPlaybackGain(): Float { + return core.getPlaybackGainDb() + } } diff --git a/ios/Classes/LiblinphoneFlutterPlugin.swift b/ios/Classes/LiblinphoneFlutterPlugin.swift index ab2e442..bb549b1 100644 --- a/ios/Classes/LiblinphoneFlutterPlugin.swift +++ b/ios/Classes/LiblinphoneFlutterPlugin.swift @@ -244,6 +244,23 @@ public class LiblinphoneFlutterPlugin: NSObject, FlutterPlugin { case "getMicGain": result(linphoneBridge.getMicGain()) + case "setPlaybackGain": + guard let args = call.arguments as? [String: Any], + let level = args["level"] as? String else { + result(FlutterError( + code: "INVALID_ARGUMENTS", + message: "Missing required arguments", + details: nil + )) + return + } + + linphoneBridge.setPlaybackGain(level: level) + result(success) + + case "getPlaybackGain": + result(linphoneBridge.getPlaybackGain()) + default: result(FlutterMethodNotImplemented) } diff --git a/ios/Classes/LinphoneBridge.swift b/ios/Classes/LinphoneBridge.swift index 565e40d..f1d61a4 100644 --- a/ios/Classes/LinphoneBridge.swift +++ b/ios/Classes/LinphoneBridge.swift @@ -280,6 +280,14 @@ class LinphoneBridge { func getMicGain() -> Float { return core.micGainDb } + + func setPlaybackGain(level: Float) { + core.playbackGainDb = level + } + + func getPlaybackGain() -> Float { + return core.playbackGainDb + } } // MARK: - CoreDelegate diff --git a/lib/liblinphone_flutter.dart b/lib/liblinphone_flutter.dart index 91cffe1..474b2fa 100644 --- a/lib/liblinphone_flutter.dart +++ b/lib/liblinphone_flutter.dart @@ -96,4 +96,10 @@ class LiblinphoneFlutter { Future getMicGain() async => LiblinphoneFlutterPlatform.instance.getMicGain(); + + Future setPlaybackGain(double level) async => + LiblinphoneFlutterPlatform.instance.setPlaybackGain(level); + + Future getPlaybackGain() async => + LiblinphoneFlutterPlatform.instance.getPlaybackGain(); } diff --git a/lib/liblinphone_flutter_method_channel.dart b/lib/liblinphone_flutter_method_channel.dart index 02dbfc4..775f9ce 100644 --- a/lib/liblinphone_flutter_method_channel.dart +++ b/lib/liblinphone_flutter_method_channel.dart @@ -130,4 +130,17 @@ class MethodChannelLiblinphoneFlutter extends LiblinphoneFlutterPlatform { Future getMicGain() async { return (await methodChannel.invokeMethod('getMicGain'))!; } + + @override + Future setPlaybackGain(double level) async { + return (await methodChannel.invokeMethod( + 'setPlaybackGain', + {'level': level}, + ))!; + } + + @override + Future getPlaybackGain() async { + return (await methodChannel.invokeMethod('getPlaybackGain'))!; + } } diff --git a/lib/liblinphone_flutter_platform_interface.dart b/lib/liblinphone_flutter_platform_interface.dart index a3340c5..f747ac5 100644 --- a/lib/liblinphone_flutter_platform_interface.dart +++ b/lib/liblinphone_flutter_platform_interface.dart @@ -105,4 +105,12 @@ abstract class LiblinphoneFlutterPlatform extends PlatformInterface { Future getMicGain() async { throw UnimplementedError('getMicGain() has not been implemented.'); } + + Future setPlaybackGain(double level) async { + throw UnimplementedError('setPlaybackGain() has not been implemented.'); + } + + Future getPlaybackGain() async { + throw UnimplementedError('getPlaybackGain() has not been implemented.'); + } }