【发布时间】: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