flutter_sound
flutter_sound copied to clipboard
[BUG]: Calls to setAudioFocus on Android throw an error
Flutter Sound Version :
-
FULL or LITE flavor: Lite
-
Important: Result of the command :
flutter pub deps | grep flutter_sound
|-- flutter_sound_lite 7.5.3+1
| |-- flutter_sound_platform_interface 7.5.3+1
| |-- flutter_sound_web 7.5.3+1
| | |-- flutter_sound_platform_interface...
Severity
- Error
Platforms you faced the error
Android 10 physical device
Your problem
Describe the bug calling setAudioFocus throws a "Failed to handle method call" error
To Reproduce Steps to reproduce the behavior:
- Create an instance of FlutterSoundRecorder
- Call setAudioFocus
Logs
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): Failed to handle method call
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at com.dooboolab.fluttersound.FlutterSoundRecorder.setAudioFocus(FlutterSoundRecorder.java:259)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at com.dooboolab.fluttersound.FlutterSoundRecorderManager.onMethodCall(FlutterSoundRecorderManager.java:103)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at android.os.Looper.loop(Looper.java:174)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at android.app.ActivityThread.main(ActivityThread.java:7682)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
E/MethodChannel#com.dooboolab.flutter_sound_recorder(26522): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
I/flutter (26522): PlatformException(error, Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference, null, java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
I/flutter (26522): at com.dooboolab.fluttersound.FlutterSoundRecorder.setAudioFocus(FlutterSoundRecorder.java:259)
I/flutter (26522): at com.dooboolab.fluttersound.FlutterSoundRecorderManager.onMethodCall(FlutterSoundRecorderManager.java:103)
I/flutter (26522): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
I/flutter (26522): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
I/flutter (26522): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
I/flutter (26522): at android.os.MessageQueue.nativePollOnce(Native Method)
I/flutter (26522): at android.os.MessageQueue.next(MessageQueue.java:336)
I/flutter (26522): at android.os.Looper.loop(Looper.java:174)
I/flutter (26522): at android.app.ActivityThread.main(ActivityThread.java:7682)
I/flutter (26522): at java.lang.reflect.Method.invoke(Native Method)
I/flutter (26522): at co
[38;5;244mI/flutter (26522): #0 StandardMethodCodec.decodeEnvelope[39;49m
package:flutter/…/services/message_codecs.dart
[38;5;244mI/flutter (26522): #1 MethodChannel._invokeMethod[39;49m
package:flutter/…/services/platform_channel.dart
I/flutter (26522): <asynchronous suspension>
[38;5;244mI/flutter (26522): #2 MethodChannel.invokeMethod[39;49m
package:flutter/…/services/platform_channel.dart
[38;5;244mI/flutter (26522): #3 MethodChannelFlutterSoundRecorder.invokeMethodVoid[39;49m
package:flutter_sound_platform_interface/method_channel_flutter_sound_recorder.dart
[38;5;244mI/flutter (26522): #4 MethodChannelFlutterSoundRecorder.setAudioFocus[39;49m
package:flutter_sound_platform_interface/method_channel_flutter_sound_recorder.dart
[38;5;244mI/flutter (26522): #5 FlutterSoundRecorder.setAudioFocus[39;49m
package:flutter_sound_lite/public/flutter_sound_recorder.dart
[38;5;248mI/flutter (26522): #6 VoiceRecordBloc.stopRecording[39;49m
package:voice_app/recorder/voice_record_bloc.dart
I/flutter (26522): <asynchronous suspension>
[38;5;248mI/flutter (26522): #7 VoiceRecordButton.build.<anonymous closure>.<anonymous closure>[39;49m
package:voice_app/recorder/voice_record_widget.dart
I/flutter (26522): #8 RenderPointerListener.handleE
E/flutter (26522): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The getter 'filePath' was called on null.
E/flutter (26522): Receiver: null
E/flutter (26522): Tried calling: filePath
[38;5;244mE/flutter (26522): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)[39;49m
[38;5;248mE/flutter (26522): #1 VoiceRecordButton.build.<anonymous closure>.<anonymous closure>[39;49m
package:voice_app/recorder/voice_record_widget.dart
E/flutter (26522): <asynchronous suspension>
[38;5;248mE/flutter (26522): #2 VoiceRecordButton.build.<anonymous closure>.<anonymous closure> (package:voice_app/recorder/voice_record_widget.dart)[39;49m
package:voice_app/recorder/voice_record_widget.dart
[38;5;244mE/flutter (26522): #3 RenderPointerListener.handleEvent[39;49m
package:flutter/…/rendering/proxy_box.dart
[38;5;244mE/flutter (26522): #4 GestureBinding.dispatchEvent[39;49m
package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (26522): #5 RendererBinding.dispatchEvent[39;49m
package:flutter/…/rendering/binding.dart
[38;5;244mE/flutter (26522): #6 GestureBinding._handlePointerEvent[39;49m
package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (26522): #7 GestureBinding._flushPointerEventQueue[39;49m
package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (26522): #8 GestureBinding._handlePointerDataPacket[39;49m
package:flutter/…/gestures/binding.dart
[38;5;244mE/flutter (26522): #9 _rootRunUnary (dart:async/zone.dart:1206:13)[39;49m
[38;5;244mE/flutter (26522): #10 _CustomZone.runUnary (dart:async/zone.dart:1100:19)[39;49m
[38;5;244mE/flutter (26522): #11 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)[39;49m
[38;5;244mE/flutter (26522): #12 _invoke1 (dart:ui/hooks.dart:265:10)[39;49m
[38;5;244mE/flutter (26522): #13 _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)[39;49m
E/flutter (26522):
D/DecorView(26522): onWindowFocusChangedFromViewRoot hasFocus: true, DecorView@35e6c1a[MainActivity]
Did you open your Audio Session before calling setAudioFocus()
?
What are the parameters that you give to setAudioFocus()
?
Note : I plan to clean the Audio Focus handling very soon.
Did you open your Audio Session before calling
setAudioFocus()
? What are the parameters that you give tosetAudioFocus()
?Note : I plan to clean the Audio Focus handling very soon.
Yes, I opened the audio session. Any parameters in setAudioFocus cause the error, I am calling it like this:
await recorder.openAudioSession(
focus: AudioFocus.doNotRequestFocus,
);
//Later on in the code (causes error)
await recorder.setAudioFocus(
focus: AudioFocus.requestFocusAndStopOthers,
mode: SessionMode.modeVoiceChat,
category: SessionCategory.playAndRecord,
);
//Stop recording
await recorder.stopRecorder();
await recorder.setAudioFocus(focus: AudioFocus.abandonFocus); //causes error
It happens using the default constructor as well; recorder.setAudioFocus()
. The same code works on iOS with no error
I am going to clean this f***ing Audio Focus handling. I will look to your issue. Please keep it open.
await soundRecorder?.setAudioFocus(
focus: AudioFocus.requestFocusAndStopOthers); // error on this line
version : flutter_sound_lite: ^8.5.0 Flutter version : 3.10.6 device : Redmi 6A (Physical device) Android version : Android 9 (API 28)
I/flutter (21126): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (21126): │ #0 FlutterSoundRecorder.setAudioFocus (package:flutter_sound_lite/public/flutter_sound_recorder.dart:870:13)
I/flutter (21126): │ #1 SoundRecorder.record (package:maiacare/screens/care_notes/view/audio_recorder.dart:59:28)
I/flutter (21126): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (21126): │ 🐛 FS:---> setAudioFocus
I/flutter (21126): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (21126): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (21126): │ #0 FlutterSoundRecorder._setAudioFocus (package:flutter_sound_lite/public/flutter_sound_recorder.dart:887:13)
I/flutter (21126): │ #1 FlutterSoundRecorder.setAudioFocus.
[GETX] ERROR PlatformException(error, Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference, null, java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference at com.dooboolab.fluttersound.FlutterSoundRecorder.setAudioFocus(FlutterSoundRecorder.java:314) at com.dooboolab.fluttersound.FlutterSoundRecorderManager.onMethodCall(FlutterSoundRecorderManager.java:100) at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258) at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322) at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6820) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:922) ) I/maiacare.devap(21126): Background concurrent copying GC freed 93151(4MB) AllocSpace objects, 3(80KB) LOS objects, 50% free, 4MB/9MB, paused 210us total 188.939ms
This issue is stale because it has been open 90 days with no activity. Leave a comment or this will be closed in 7 days.
This issue should be analysed