audioplayers icon indicating copy to clipboard operation
audioplayers copied to clipboard

Crash found in Developer Console, xyz.luan.audioplayers.player.MediaPlayerPlayer.setRate

Open pramana0361 opened this issue 1 year ago • 5 comments

Checklist

  • [X] I read the troubleshooting guide before raising this issue
  • [X] I made sure that the issue I am raising doesn't already exist

Current bug behaviour

Exception java.lang.IllegalStateException: at android.media.MediaPlayer.getPlaybackParams at xyz.luan.audioplayers.player.MediaPlayerPlayer.setRate (MediaPlayerPlayer.java) at xyz.luan.audioplayers.player.MediaPlayerPlayer.start (MediaPlayerPlayer.java) at xyz.luan.audioplayers.player.WrappedPlayer.onPrepared (WrappedPlayer.java) at xyz.luan.audioplayers.player.MediaPlayerPlayer.createMediaPlayer$lambda-5$lambda-0 (MediaPlayerPlayer.java) at android.media.MediaPlayer$EventHandler.handleMessage (MediaPlayer.java:3455) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:211) at android.os.Looper.loop (Looper.java:300) at android.app.ActivityThread.main (ActivityThread.java:8410) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:559) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:954)

Expected behaviour

No crash occurred

Steps to reproduce

  1. Execute flutter run --release on the code sample
  2. ...
  3. ...

Code sample

Code sample

var playerBg = AudioPlayer(playerId: 'playerBg'); var playerBtn = AudioPlayer(playerId: 'playerBtn');

await playerBg.setPlayerMode(PlayerMode.mediaPlayer); await playerBtn.setPlayerMode(PlayerMode.mediaPlayer);

await playerBg.setReleaseMode(ReleaseMode.loop);

playerBg.play(AssetSource('/audio/bg.m4a');

await playerBtn.play(AssetSource('/audio/btn.m4a');

Affected platforms

Android

Platform details

Android 13 (API 33) Redmi wind (Redmi 10C)

AudioPlayers Version

main, 5.2.1

Build mode

release

Audio Files/URLs/Sources

No response

Screenshots

No response

Logs

No response

Related issues / more information

No response

Working on PR

no way

pramana0361 avatar Dec 30 '23 03:12 pramana0361

I have seen this on my player base on a Samsung S22 Ultra running Android 14.

Here is the source code here where the bug occurs: https://github.com/bluefireteam/audioplayers/blob/main/packages/audioplayers_android/android/src/main/kotlin/xyz/luan/audioplayers/player/MediaPlayerPlayer.kt#L41

mediaPlayer.playbackParams = mediaPlayer.playbackParams.setSpeed(rate)

Here is the Android source code for getPlaybackParams():

/**
--
  | * Gets the playback params, containing the current playback rate.
  | *
  | * @return the playback params.
  | * @throws IllegalStateException if the internal player engine has not been
  | * initialized.
  | */
  | @NonNull
  | public native PlaybackParams getPlaybackParams();

You can see how it says that it throws a IllegalStateException if the Internal player engine is not initialized.

mindwalkr avatar Jan 07 '24 19:01 mindwalkr

Also seeing this, in our case after the app resumed.

java.lang.IllegalStateException: null
    at android.media.MediaPlayer.getPlaybackParams(MediaPlayer.java)
    at nc.i.l(MediaPlayerPlayer.kt:2)
    at nc.i.start
    at nc.o.z(WrappedPlayer.kt:4)
    at nc.i.t
    at nc.i.q
    at nc.g.onPrepared
    at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3357)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7720)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:997)

timcschmidt avatar Jan 17 '24 20:01 timcschmidt

Seeing the same in the case of resuming / backgrounding Apps

dgilperez avatar Jan 31 '24 09:01 dgilperez

same here

alihuseyin avatar Feb 05 '24 12:02 alihuseyin

same here

Tangxiaochuanle avatar Feb 07 '24 02:02 Tangxiaochuanle