在我的alart对话框中,我想从SDcard播放mp3并更新seekbar。其工作正常与以下代码。但Seekbar Ontouchlistener不工作,像向前倒带mp3。Android自定义提醒对话框mediaplayer seekbar
可能maiin活动:
public class MainActivity extends Activity {
private MediaPlayer mediaPlayer = new MediaPlayer();
SeekBar seekBarProgress;
ImageButton buttonPlayPause;
private int mediaFileLengthInMilliseconds;
private final Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.popup_ringtones);
dialog.setTitle("Title...");
buttonPlayPause = (ImageButton) dialog.findViewById(R.id.play);
seekBarProgress = (SeekBar) dialog.findViewById(R.id.SeekBarTestPlay);
seekBarProgress.setProgress(0);
seekBarProgress.setMax(100);
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mediaPlayer.pause();
}
});
buttonPlayPause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = new MediaPlayer();
}
AssetFileDescriptor descriptor = getAssets().openFd("a.mp3");
mediaPlayer.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
descriptor.close();
mediaPlayer.prepare();
mediaPlayer.setVolume(1f, 1f);
mediaPlayer.setLooping(true);
mediaPlayer.start();
primarySeekBarProgressUpdater();
} catch (Exception e) {
e.printStackTrace();
}
mediaFileLengthInMilliseconds = mediaPlayer.getDuration();
}
});
dialog.show();
}
});
}
private void primarySeekBarProgressUpdater() {
seekBarProgress.setProgress((int)(((float)mediaPlayer.getCurrentPosition()/mediaFileLengthInMilliseconds)*100)); // This math construction give a percentage of "was playing"/"song length"
if (mediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
primarySeekBarProgressUpdater();
}
};
handler.postDelayed(notification,1000);
}
}
}
我想ontouch搜索条更新歌曲,我如何能实现?
我在同样的事情股票实施
setOnSeekBarChangeListener
,请你用完整的答案更新你的问题,谢谢 – Sasa