audioplayers
audioplayers copied to clipboard
Wrong local assets playing on player completion
Full Description
I have several audiofiles in assets. I want the player to play the next track on completion. For that I've defined a recursive play function (see code below).
The first few tracks are being played OK. However, after 2 or 3 tracks have been played, the player the starts playing several of the previous tracks - for a fraction of a second - and I I get an error message .
See the code below for a minimal example (you'll also find a link to a github repo which contains the audiofiles).
When I tapped play and let the player play a few tracks, I expected to see in the console : I/flutter (25557): track playing : 3 I/flutter (25557): track playing : 4 I/flutter (25557): track playing : 5 I/flutter (25557): track playing : 6 I/flutter (25557): track playing : 7
Instead I got the log reproduced below.
Code to Reproduce see here for github repo with asset files: https://github.com/nicolo-fr/audioplayers-bug-example
import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
static final AudioPlayer advancedPlayer = AudioPlayer();
static final AudioCache audioCache = AudioCache(fixedPlayer: advancedPlayer);
Stream<void> completionEvent = advancedPlayer.onPlayerCompletion;
Future<void> play(int trackNbr) async {
try {
await audioCache.play('$trackNbr.flac');
print('track playing : $trackNbr');
} catch (e) {}
if (trackNbr < 10) {
completionEvent.listen(
(event) {
play(trackNbr + 1);
},
);
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Example'),
),
body: Center(
child: ElevatedButton(
child: Text('Play tracks'),
onPressed: () {
play(3);
},
),
),
),
);
}
}
Log Errors
I/flutter (25557): track playing : 3
V/MediaPlayer(25557): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer(25557): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/flutter (25557): track playing : 4
I/flutter (25557): track playing : 4
V/MediaPlayer(25557): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer(25557): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/flutter (25557): track playing : 5
V/MediaPlayer(25557): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer(25557): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/flutter (25557): track playing : 4
E/MediaPlayerNative(25557): attachNewPlayer called in state 4
E/AudioplayersPlugin(25557): Unexpected error!
E/AudioplayersPlugin(25557): java.lang.IllegalStateException
E/AudioplayersPlugin(25557): at android.media.MediaPlayer._setDataSource(Native Method)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1299)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1282)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1239)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1216)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1181)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.WrappedMediaPlayer.setUrl(WrappedMediaPlayer.kt:37)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:59)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:34)
E/AudioplayersPlugin(25557): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.nativePollOnce(Native Method)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.next(MessageQueue.java:336)
E/AudioplayersPlugin(25557): at android.os.Looper.loop(Looper.java:181)
E/AudioplayersPlugin(25557): at android.app.ActivityThread.main(ActivityThread.java:7561)
E/AudioplayersPlugin(25557): at java.lang.reflect.Method.invoke(Native Method)
E/AudioplayersPlugin(25557): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AudioplayersPlugin(25557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
I/flutter (25557): track playing : 5
V/MediaPlayer(25557): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer(25557): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/flutter (25557): track playing : 6
V/MediaPlayer(25557): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer(25557): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/flutter (25557): track playing : 4
E/MediaPlayerNative(25557): attachNewPlayer called in state 4
E/AudioplayersPlugin(25557): Unexpected error!
E/AudioplayersPlugin(25557): java.lang.IllegalStateException
E/AudioplayersPlugin(25557): at android.media.MediaPlayer._setDataSource(Native Method)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1299)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1282)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1239)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1216)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1181)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.WrappedMediaPlayer.setUrl(WrappedMediaPlayer.kt:37)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:59)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:34)
E/AudioplayersPlugin(25557): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.nativePollOnce(Native Method)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.next(MessageQueue.java:336)
E/AudioplayersPlugin(25557): at android.os.Looper.loop(Looper.java:181)
E/AudioplayersPlugin(25557): at android.app.ActivityThread.main(ActivityThread.java:7561)
E/AudioplayersPlugin(25557): at java.lang.reflect.Method.invoke(Native Method)
E/AudioplayersPlugin(25557): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AudioplayersPlugin(25557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
I/flutter (25557): track playing : 5
E/MediaPlayerNative(25557): attachNewPlayer called in state 4
E/AudioplayersPlugin(25557): Unexpected error!
E/AudioplayersPlugin(25557): java.lang.IllegalStateException
E/AudioplayersPlugin(25557): at android.media.MediaPlayer._setDataSource(Native Method)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1299)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1282)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1239)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1216)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1181)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.WrappedMediaPlayer.setUrl(WrappedMediaPlayer.kt:37)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:59)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:34)
E/AudioplayersPlugin(25557): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.nativePollOnce(Native Method)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.next(MessageQueue.java:336)
E/AudioplayersPlugin(25557): at android.os.Looper.loop(Looper.java:181)
E/AudioplayersPlugin(25557): at android.app.ActivityThread.main(ActivityThread.java:7561)
E/AudioplayersPlugin(25557): at java.lang.reflect.Method.invoke(Native Method)
E/AudioplayersPlugin(25557): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AudioplayersPlugin(25557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
E/MediaPlayerNative(25557): attachNewPlayer called in state 4
E/AudioplayersPlugin(25557): Unexpected error!
E/AudioplayersPlugin(25557): java.lang.IllegalStateException
E/AudioplayersPlugin(25557): at android.media.MediaPlayer._setDataSource(Native Method)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1299)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1282)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1239)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1216)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1181)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.WrappedMediaPlayer.setUrl(WrappedMediaPlayer.kt:37)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:59)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:34)
E/AudioplayersPlugin(25557): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.nativePollOnce(Native Method)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.next(MessageQueue.java:336)
E/AudioplayersPlugin(25557): at android.os.Looper.loop(Looper.java:181)
E/AudioplayersPlugin(25557): at android.app.ActivityThread.main(ActivityThread.java:7561)
E/AudioplayersPlugin(25557): at java.lang.reflect.Method.invoke(Native Method)
E/AudioplayersPlugin(25557): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AudioplayersPlugin(25557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
E/MediaPlayerNative(25557): attachNewPlayer called in state 8
E/AudioplayersPlugin(25557): Unexpected error!
E/AudioplayersPlugin(25557): java.lang.IllegalStateException
E/AudioplayersPlugin(25557): at android.media.MediaPlayer._setDataSource(Native Method)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1299)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1282)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1239)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1216)
E/AudioplayersPlugin(25557): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1181)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.WrappedMediaPlayer.setUrl(WrappedMediaPlayer.kt:37)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:59)
E/AudioplayersPlugin(25557): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:34)
E/AudioplayersPlugin(25557): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/AudioplayersPlugin(25557): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.nativePollOnce(Native Method)
E/AudioplayersPlugin(25557): at android.os.MessageQueue.next(MessageQueue.java:336)
E/AudioplayersPlugin(25557): at android.os.Looper.loop(Looper.java:181)
E/AudioplayersPlugin(25557): at android.app.ActivityThread.main(ActivityThread.java:7561)
E/AudioplayersPlugin(25557): at java.lang.reflect.Method.invoke(Native Method)
E/AudioplayersPlugin(25557): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AudioplayersPlugin(25557): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
I/flutter (25557): track playing : 6
V/MediaPlayer(25557): resetDrmState: mDrmInfo=null mDrmProvisioningThread=null mPrepareDrmInProgress=false mActiveDrmScheme=false
V/MediaPlayer(25557): cleanDrmObj: mDrmObj=null mDrmSessionId=null
I/flutter (25557): track playing : 7
Application finished.
Exited (sigterm)
Platforms I tried this code on a physical android device (Redmi 9 M2004J19C) Audioplyer version : ^0.19.1 Flutter version 2.2.0
Same problem issue in Xiaomi MI A2 Lite using audioplayers: ^0.20.1 flutter: 2.12.0
Having same problem in latest version . device: Redmi note 8 audioplayers: ^0.20.1 issue:
E/MediaPlayerNative(32167): attachNewPlayer called in state 4 D/AudioPlayers(32167): Unexpected error! D/AudioPlayers(32167): java.lang.IllegalStateException D/AudioPlayers(32167): at android.media.MediaPlayer._setDataSource(Native Method) D/AudioPlayers(32167): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1319) D/AudioPlayers(32167): at xyz.luan.audioplayers.WrappedMediaPlayer.setDataSource(WrappedMediaPlayer.kt:52) D/AudioPlayers(32167): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:71) D/AudioPlayers(32167): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:33) D/AudioPlayers(32167): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233) D/AudioPlayers(32167): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) D/AudioPlayers(32167): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818) D/AudioPlayers(32167): at android.os.MessageQueue.nativePollOnce(Native Method) D/AudioPlayers(32167): at android.os.MessageQueue.next(MessageQueue.java:326) D/AudioPlayers(32167): at android.os.Looper.loop(Looper.java:165) D/AudioPlayers(32167): at android.app.ActivityThread.main(ActivityThread.java:6864) D/AudioPlayers(32167): at java.lang.reflect.Method.invoke(Native Method) D/AudioPlayers(32167): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) D/AudioPlayers(32167): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) E/flutter (32167): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(Unexpected error!, null, java.lang.IllegalStateException E/flutter (32167): at android.media.MediaPlayer._setDataSource(Native Method) E/flutter (32167): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1319) E/flutter (32167): at xyz.luan.audioplayers.WrappedMediaPlayer.setDataSource(WrappedMediaPlayer.kt:52) E/flutter (32167): at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:71) E/flutter (32167): at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:33) E/flutter (32167): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233) E/flutter (32167): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) E/flutter (32167): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818) E/flutter (32167): at android.os.MessageQueue.nativePollOnce(Native Method) E/flutter (32167): at android.os.MessageQueue.next(MessageQueue.java:326) E/flutter (32167): at android.os.Looper.loop(Looper.java:165) E/flutter (32167): at android.app.ActivityThread.main(ActivityThread.java:6864) E/flutter (32167): at java.lang.reflect.Method.invoke(Native Method) E/flutter (32167): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) E/flutter (32167): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) E/flutter (32167): , null)
Can you recheck with audioplayers: ^1.1.0
?
Closing as stale.