【问题标题】:I can not stop and release the player in android我无法在 android 中停止和释放播放器
【发布时间】:2014-11-17 05:44:28
【问题描述】:

请向我解释如何正确使用播放器+SeekBar。使用停止的方法是没有错误的,但是在启动和停止几首歌曲时程序会崩溃。使用 realase 错误输出 错误

我运行播放器和搜索栏:

holder.start.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    releaseMP();
    try {
      global_position = position;
      mediaPlayer = new MediaPlayer();
      mediaPlayer.setDataSource(recordBeans.get(global_position).getFile());
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
      mediaPlayer.prepareAsync();
      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
          holder.seekBar.setMax(mediaPlayer.getDuration());
          mediaPlayer.start();
          startPlayProgressUpdater(holder.seekBar);
        }
      });
    } catch (IOException e) {
      e.printStackTrace();
    }
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
      @Override
      public void onCompletion(MediaPlayer mediaPlayer) {
        mediaPlayer.release();
        mediaPlayer = null;
      }
    });
  }
});

错误指向string

recordBeans.get(global_position).setSeekPos(mediaPlayer.getCurrentPosition());

启动播放器和升级方法seekbar:

public void startPlayProgressUpdater(final SeekBar seekBar) {
  if (mediaPlayer != null) {
    recordBeans.get(global_position).setSeekPos(mediaPlayer.getCurrentPosition());
  } else {
    recordBeans.get(global_position).setSeekPos(0);
  }
  if ((Integer) seekBar.getTag() == global_position) {
    seekBar.setProgress(recordBeans.get(global_position).getSeekPos());
    }
    if (mediaPlayer != null) {
      Runnable notification = new Runnable() {
        public void run() {
          startPlayProgressUpdater(seekBar);
        }
      };
      handler.postDelayed(notification, 1000);
    }
  }

停止按钮:

holder.stop.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {
    if ((Integer) v.getTag() == global_position && mediaPlayer != null) {
      mediaPlayer.release();
      mediaPlayer = null;
    }
  }
});

seekbar结束时:

java.lang.NullPointerException
at com.example.MANAGMENT.fragments.adapters.RecordAdapter$4.run(RecordAdapter.java:165)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 你给我这个链接的 3 倍。它对我没有任何帮助。不管我需要什么。
  • 好的,这意味着你已经问了同样的问题 3 次...
  • 这意味着您给我的决定与我的问题无关。仔细阅读我的问题
  • 那你为什么又问同样的问题?

标签: android android-mediaplayer android-seekbar


【解决方案1】:

试试

if (mediaPlayer.isPlaying){
      mediaPlayer.release;
   }

无论你在哪里发布媒体播放器

【讨论】:

  • (y) 快乐编程
猜你喜欢
  • 2013-04-06
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
相关资源
最近更新 更多