某些设备上的MediaPlayer null点异常

时间:2014-05-30 14:22:23

标签: android nullpointerexception media-player

Google Play上的用户将我的应用评为一颗星,因为它在点击按钮时崩溃了。他正在使用HTC Desire 500.我检查了他的LogCat并说:

    java.lang.NullPointerException
at com.lifeapps.appquiz.SixthImageLogo$4.onClick(SixthImageLogo.java:333)
at android.view.View.performClick(View.java:4107)
at android.view.View$PerformClick.run(View.java:17160)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5536)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
at dalvik.system.NativeStart.main(Native Method)

在第333行有MediaPlayer。我不知道它是什么导致了这个问题,因为我无法在真实设备上检查它,因为它可以在其他所有设备上运行(我当然也是如此)。

这是OnClick中的MediaPlayer代码:

 MediaPlayer mediaPlayer = MediaPlayer.create(SixteenthImageLogo.this, R.raw.twinkle);
    mediaPlayer.start();
       mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
            // TODO Auto-generated method stub
                mp.release();
            }
       });

错误在mediaPlayer.start();

原始文件是.mp3和308.882字节。

谢谢。

1 个答案:

答案 0 :(得分:0)

根据文档,create()方法可以返回null。例如,当媒体播放器实例太多时(可能您没有释放调用release()方法的资源,或者您创建了太多实例)。所以你必须做一个检查:

 MediaPlayer mediaPlayer = MediaPlayer.create(SixteenthImageLogo.this, R.raw.twinkle);
 if (mediaPlayer == null)
       return; //error handling here

Bella app;)