flutter_radio icon indicating copy to clipboard operation
flutter_radio copied to clipboard

volume control is not working

Open tarekbazine opened this issue 4 years ago • 4 comments

once I call setVolume() I get this error :

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method setVolume on channel flutter_radio)
E/flutter (27556): #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
E/flutter (27556): <asynchronous suspension>
E/flutter (27556): #1      FlutterRadio.setVolume (package:flutter_radio/flutter_radio.dart:124:10)
E/flutter (27556): <asynchronous suspension>
E/flutter (27556): #2      _AudioPlayerState.build.<anonymous closure> (package:tamejida/ui/widgets/audio_palyer1.dart:72:44)
E/flutter (27556): #3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:635:14)
E/flutter (27556): #4      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:711:32)
E/flutter (27556): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (27556): #6      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
E/flutter (27556): #7      TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:312:7)
E/flutter (27556): #8      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (27556): #9      _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
E/flutter (27556): #10     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (27556): #11     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (27556): #12     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (27556): #13     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (27556): #14     _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter (27556): #15     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter (27556): #16     _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter (27556): #17     _invoke1 (dart:ui/hooks.dart:250:10)
E/flutter (27556): #18     _dispatchPointerDataPacket (dart:ui/hooks.dart:159:5)
E/flutter (27556): 

tarekbazine avatar Aug 16 '19 08:08 tarekbazine

i've got no error like that but it cannot set the volume

rymesaint avatar Sep 23 '19 08:09 rymesaint

The reason: the Kotlin implementation misses the setVolume method! So, on Android, it Wont' work, the missing plugin exception will occure. Btw, on iOS, implementation seems to me o.k.

So, what can be done for android? Until the plugin owner does not correct this BUG, then, you can workaround it, from other words, you can solve it locally, in this way:

  1. download flutter_radio from github, and use this as local plugin In pubspec.yaml, write
flutter_radio: 
    path: ../flutter_radio

if the directory of flutter_radio is next to the directory of your project.

  1. open FlutterRadioPlugin.kt, goto onMethodCall add an else branch here:
call.method.equals("setVolume")-> {
          val volume = call.argument("volume") as Double
          radioManager.setVolume(volume.toFloat())
          result.success(null)
}
  1. open RadioManager.kt, add:
fun setVolume(volume: Float) {
        service.setVolume(volume)
}
  1. open RadioService.kt, add:
fun setVolume(volume: Float) {
        exoPlayer.volume = volume
}

That's all. Enjoy it! Cheers, DaneeD

daneed avatar Jan 26 '20 17:01 daneed

Please fix this!

erwinsetiawan avatar Jun 13 '20 08:06 erwinsetiawan

+1

pishguy avatar Jun 03 '21 19:06 pishguy