java - 带有 Seekbar 的音乐播放器 (Android Studio)
问题描述
我在一个非常简单的带有搜索栏的音乐播放器中工作。但是我在播放音乐时遇到了问题,它每秒都不能正常工作 - 它倒退了一段时间,然后又像马车一样继续存在。
我知道为什么,但我无法解决。
当进度条向前移动时,音乐重新校准,反之亦然,当音乐向前移动时,进度条重新校准。大概就是因为这样,每次回去吧。但我尝试了几件事,仍然有同样的问题。
另一个问题是,当音乐暂停时,进度条会向相反的方向移动,直到达到零。它不会停留在休息前的位置。
完整代码:
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SeekBar seekBar;
private boolean bool = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.seekBar = (SeekBar) findViewById(R.id.sound_bar);
this.mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.music);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
seekBar.setProgress(mediaPlayer.getCurrentPosition() * seekBar.getMax() / mediaPlayer.getDuration());
}
}, 500, 500);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mediaPlayer.seekTo(seekBar.getProgress() * mediaPlayer.getDuration() / seekBar.getMax());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
public void playSound(View view) {
Button button = (Button) view;
if(bool) {
mediaPlayer.pause();
bool = false;
button.setText("Jouer le son");
} else {
mediaPlayer.start();
bool = true;
button.setText("Mettre en pause");
}
}
@Override
protected void onPause() {
super.onPause();
mediaPlayer.pause();
}
@Override
protected void onStart() {
super.onStart();
if(bool) {
mediaPlayer.start();
}
}
}
解决方案
也许使用另一个线程来控制搜索栏会有所帮助。
看看这个
推荐阅读
- android - Xamarin(Android):图片/文件格式不兼容分享照片到 Instagram
- css - 为什么 css margin-right 在 angular 8 上无效,带有清晰-ui?
- arrays - 如何将真实数据(不是测试数据)附加到 SwiftUI 中的列表?
- hyperledger-fabric - 重启 BYFN 网络后,chaincode 中更改的代码不费力?
- java - 如何使用 Java 通过 MongoDB 中的嵌入式数组过滤文档
- wordpress - 类别变化标签出库存 Woocommerce
- linux - 为远程设备开发 qt 应用程序
- javascript - 父子关系和在对象查看器中导航
- node.js - node.js multer上传后无法显示图像
- javascript - SvelteJS 是否将第三方库代码转换为纯 Javascript?