Странная проблема с MediaPlayer на Android версии 9 — исключение нулевого указателя

Недавно я сменил свой смартфон на Xiaomi Redmi Note 7 (Android 9) и захотел протестировать на нем одно из своих приложений. Приложение не запускается, потому что есть проблема с MediaPlayer. Который не появляется ни на одном смартфоне или планшете, на котором я тестировал приложение (даже на гораздо более слабом, чем note 7). Однако все они работали на старой версии андроида.

Ошибки:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: aaa.aaa.aa, PID: 25635
              java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.setOnCompletionListener(android.media.MediaPlayer$OnCompletionListener)' on a null object reference
                  at aaa.aaa.aa.MyActivity.prepare_media_minigun(MyActivity.java:6789)
                  at aaa.aaa.aa.MyActivity.onClick(MyActivity.java:4176)
                  at android.view.View.performClick(View.java:6608)
                  at android.view.View.performClickInternal(View.java:6585)
                  at android.view.View.access$3100(View.java:785)
                  at android.view.View$PerformClick.run(View.java:25921)
                  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:6810)
                  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:873)


E/MediaPlayerNative: Unable to create media player
D/MediaPlayer: create failed:
           java.io.IOException: setDataSourceFD failed.: status=0x80000000
               at android.media.MediaPlayer._setDataSource(Native Method)
               at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1304)
               at android.media.MediaPlayer.create(MediaPlayer.java:998)
               at android.media.MediaPlayer.create(MediaPlayer.java:971)

Мой код:

static void prepare_media_minigun() {
    for (int i = 0; i < minigun_max_ammo; i++) {
        media_minigun[i] = new MediaPlayer();

        if (minigun_silencer == false) {
            media_minigun[i] = MediaPlayer.create(context, R.raw.minigun);
        } else {
            media_minigun[i] = MediaPlayer.create(context, R.raw.minigun2);
        }

        media_minigun[i].setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                mp.release();
            }
        });
    }

    minigun_player_unloaded = false;
}

Массив MediaPlayers:

public static   MediaPlayer[] media_minigun = new MediaPlayer[100] ;

Метод prepare_media_minigun() вызывается в OnCreate().

Может быть кто-то уже сталкивался с этой ошибкой, потому что у меня нет идей, как ее решить. Кажется, это проблема с загрузкой звуков из папки raw.

Установил это приложение на OnePlus 7 с андроидом 9.0 и оно тоже не работает. Похоже, проблема что-то в этой версии андроида.


comment
Пробовали ли вы перекодировать аудиофайл в другой формат? Этот ответ предполагает, что неподдерживаемый формат может быть возможным источником исключения.   -  person pappbence96    schedule 30.07.2019
comment
Оригинальный звук в формате mp3. Пробовал WAV и OGG, не помогло.   -  person pawel22    schedule 30.07.2019