java - 按后退按钮停止媒体播放器

标签 java android media-player

我有一个媒体播放器,可以从 URL 播放 mp3。当我播放歌曲并按下后退按钮时,应用程序出现错误。我使用了 prepareAsync();

我是新来的,如果你不能很好地理解我,很抱歉。

这是我的play 函数和ondestroy 函数。谢谢。

public void  playSong(final int naatindex){
    // Play song
    tv = (TextView) this.findViewById(R.id.mywidget);  
    try {
        mp.reset();
        mp.setDataSource(naatpaths[naatindex]);
        Log.w("Play Song", "CS"+naatindex);
        tv.setText("Buffering Please Wait....!");
        songCurrentDurationLabel.setVisibility(View.INVISIBLE);
        tv.setSelected(true);
        songTotalDurationLabel.setVisibility(View.INVISIBLE);
        mp.prepareAsync();
        mp.setOnPreparedListener(new OnPreparedListener(){
            @Override
            public void onPrepared(MediaPlayer mp){
                songCurrentDurationLabel.setVisibility(View.VISIBLE);
                songTotalDurationLabel.setVisibility(View.VISIBLE);

                    mp.start();

                    tv.setText(naattitles[naatindex]);
                    // Changing Button Image to pause image
                    btnPlay.setImageResource(R.drawable.btn_pause);
                    // set Progress bar values
                    songProgressBar.setProgress(0);
                    songProgressBar.setMax(100);
                    // Updating progress bar
                    updateProgressBar();
            }
        });



        mp.setOnErrorListener(new OnErrorListener() {
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Log.w("Unable to Play", "CS"+naatindex);
                playSong(currentSongIndex+1);
                return false;
            }
        });




         // Set focus to the textview
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

  @Override
  public void onDestroy(){
  mp.release();
  mp = null;
  super.onDestroy();
  }

这是我的日志错误

01-10 16:16:40.339: W/dalvikvm(26539): threadid=1: thread exiting with uncaught exception (group=0x416282a0)
01-10 16:16:40.344: E/AndroidRuntime(26539): FATAL EXCEPTION: main
01-10 16:16:40.344: E/AndroidRuntime(26539): java.lang.NullPointerException
01-10 16:16:40.344: E/AndroidRuntime(26539):    at com.maulantariqjameel.bayyan.media_player$1.run(media_player.java:5032)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at android.os.Handler.handleCallback(Handler.java:615)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at android.os.Looper.loop(Looper.java:137)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at android.app.ActivityThread.main(ActivityThread.java:4921)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at java.lang.reflect.Method.invokeNative(Native Method)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at java.lang.reflect.Method.invoke(Method.java:511)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
01-10 16:16:40.344: E/AndroidRuntime(26539):    at dalvik.system.NativeStart.main(Native Method)

最佳答案

@Override 
protected void onDestroy() { 
if (runnableObject != null) 
myHandler.removeCallbacks(runnableObject ); 
super.onDestroy(); 
}
private void backPressed() {
if (mpAudioSdCard != null) {
            mpAudioSdCard.stop();
            mpAudioSdCard.release();
            mpAudioSdCard = null;
        }

}

试试这个它对我有用我认为你的错误是你调用 super.onDestroy();首先

关于java - 按后退按钮停止媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27873417/

相关文章:

java : Cannot format given Object as a Date

android - 从 addValueEventListener Firebase 中检索字符串

java - android:如何在从单独的类单击按钮时在android中播放声音

android - Android:录制和收听音频

java - 三星 Galaxy Tab 7.0 在从相机 Intent 返回时重启应用程序

java - 如何获取 anchor 标记内的部分 href

android - 在 Android 中下载 Google 云端硬盘图像的最有效方法是什么?

java - 如何创建youtube格式的媒体播放器?

Java Swing JTree : how to change the focus on the last created node

android - Amazon Cognito Auth 库导致 gradle IOException(重复的 zip 条目)