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();
我在我的应用程序上使用媒体播放器,但有时应用程序会崩溃,但并非总是如此,我在我的代码中添加了一些 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();