gpt4 book ai didi

android - 使用 Android Studio 的音乐播放器搜索栏

转载 作者:行者123 更新时间:2023-11-29 15:46:23 25 4
gpt4 key购买 nike

我在一个非常简单的带有搜索栏的音乐播放器中工作。我可以让它工作,但我在播放音乐时遇到了问题,它每秒都不能正常工作 - 它倒退了一会儿,然后又像一辆 buggy 一样保持原状。

完整代码如下:

private MediaPlayer mediaPlayer;
private Button button;
private TextView textView;
private SeekBar seek;
private Handler mHandler = new Handler();


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


button = (Button)findViewById(R.id.button);
textView = (TextView)findViewById(R.id.text);
seek = (SeekBar)findViewById(R.id.seek);

mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.threedays);


MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {



if(mediaPlayer != null){
int mCurrentPosition = mediaPlayer.getCurrentPosition() / 1000;
seek.setProgress(mCurrentPosition);
}
mHandler.postDelayed(this, 1000);
}
});


seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {


seekBar.setMax(mediaPlayer.getDuration() / 1000);
textView.setText(progress + "/" + seekBar.getMax());
mediaPlayer.seekTo(progress*1000);
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}
});


mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {

pause();

}
});


button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

if (mediaPlayer.isPlaying()) {
pause();
} else {

start();
}

}
});
}

public void start(){
if(mediaPlayer!=null) {
mediaPlayer.start();
button.setText("Pause");
}
}

public void pause(){
if(mediaPlayer!=null) {
mediaPlayer.pause();
button.setText("Play");
}
}

@Override
protected void onDestroy() {

if(mediaPlayer!=null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
mediaPlayer.release();
mediaPlayer = null;
}

super.onDestroy();
}

最佳答案

seek.setOnSeekBarChangeListener 上尝试这段代码

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
seekBar.setMax(mediaPlayer.getDuration() / 1000);
textView.setText(progress + "/" + seekBar.getMax());

if(fromUser)
{
mediaPlayer.seekTo(progress*1000);
}
}

关于android - 使用 Android Studio 的音乐播放器搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810384/

25 4 0