Android mediaplayer 未捕获异常 (group=0x40aff9f0)

Android mediaplayer uncaught exception (group=0x40aff9f0)

我在我的应用程序上使用媒体播放器,但有时应用程序会崩溃,但并非总是如此,我在我的代码中添加了一些 log.d 行以查找问题所在以及我得到的结果:

03-17 15:50:17.942: D/MER(16907): Vendosi Fotot
03-17 15:50:17.942: D/MER(16907): Perpiqet lexoj
03-17 15:50:17.942: D/HINI MRENDA(16907): HINI MRENDA
03-17 15:50:17.942: D/MRENDA O(16907): MRENDA O
03-17 15:50:17.942: D/PERPIQET(16907): Perpiqet lexoj
03-17 15:50:17.942: W/dalvikvm(16907): threadid=1: thread exiting with uncaught exception (group=0x40aff9f0)
03-17 15:50:17.952: E/AndroidRuntime(16907): FATAL EXCEPTION: main
03-17 15:50:17.952: E/AndroidRuntime(16907): java.lang.NullPointerException
03-17 15:50:17.952: E/AndroidRuntime(16907):    at com.albstudents.flakki.Gjeegjeza.Play.Lexoje(Play.java:390)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at com.albstudents.flakki.Gjeegjeza.Play.mer(Play.java:137)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at com.albstudents.flakki.Gjeegjeza.Play.access(Play.java:105)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at com.albstudents.flakki.Gjeegjeza.Play$MyCounter.onFinish(Play.java:303)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at android.os.CountDownTimer.handleMessage(CountDownTimer.java:118)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at android.os.Looper.loop(Looper.java:137)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at android.app.ActivityThread.main(ActivityThread.java:4424)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at java.lang.reflect.Method.invokeNative(Native Method)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at java.lang.reflect.Method.invoke(Method.java:511)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
03-17 15:50:17.952: E/AndroidRuntime(16907):    at dalvik.system.NativeStart.main(Native Method)

有错误时的代码...

private void Lexoje(){
        Log.d("MRENDA O","MRENDA O");
        try {
            Log.d("PERPIQET","Perpiqet lexoj"); //ERROR IS HAPPENING HERE
            PlayM(FolderiS);
        } catch (IllegalArgumentException e) {
            messagebox("MerPlay",e.getMessage().toString(), e.getCause().toString());
            e.printStackTrace();
        } catch (IllegalStateException e) {
            messagebox("MerPlay1",e.getMessage().toString(), e.getCause().toString());
            e.printStackTrace();
        } catch (IOException e) {
            messagebox("MerPlay2",e.getMessage().toString(), e.getCause().toString());
            e.printStackTrace();
        }
    }

PlayM代码是这样的:

public void PlayM(String Folder) throws IllegalArgumentException, IllegalStateException, IOException
    {
        AssetFileDescriptor descriptor = this.getAssets().openFd(Folder + "/Leximi.mp3");
        long start = descriptor.getStartOffset();
        long end = descriptor.getLength();

        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.setDataSource(descriptor.getFileDescriptor(), start, end);
        mediaPlayer.prepare();
        mediaPlayer.start();
    }

并且每次玩家点击时都会被调用.. 但是当我调用 PlayerClicks 时:

releaseMediaPlayer();
mediaPlayer = new MediaPlayer();

releaseMediaPlayer 代码为:

private void releaseMediaPlayer() {
    if (mediaPlayer != null) {
        if(mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
        }
        mediaPlayer.release();
        mediaPlayer = null;
    }
}

任何帮助将不胜感激..

谢谢..

我找到了解决方案... 问题是,当我想播放声音时,我总是声明媒体播放器...

 mediaPlayer.release();
 mediaPlayer = null;
 mediaPlayer = new MediaPlayer();

不,我只是使用 :

mediaPlayer.reset();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(descriptor.getFileDescriptor(), start, end);
mediaPlayer.prepare();
mediaPlayer.start();