Android版本9上MediaPlayer的一个奇怪问题-空指针异常

时间:2019-07-30 12:08:39

标签: android android-studio nullpointerexception android-mediaplayer android-9.0-pie

最近,我将智能手机更改为小米Redmi Note 7(Android 9),并想在其上测试我的一个应用程序。 该应用程序无法启动,因为MediaPlayer存在一些问题。在我测试过该应用程序的任何智能手机或平板电脑上都没有出现(即使比注释7弱得多)。但是,他们都在旧版本的android上工作。

错误:

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()中调用。

也许有人已经遇到了该错误,因为我不知道如何解决该错误。从原始文件夹加载声音似乎是一个问题。

我在具有Android 9.0的OnePlus 7上安装了此应用程序,它也无法正常工作。看来问题出在这个版本的android。

0 个答案:

没有答案