java - Scrub 搜索栏在运行时出现问题
问题描述
嘿,我在 android 上创建了一个简单的应用程序,它只播放和暂停一首歌曲,并有一个音量搜索栏和一个擦洗搜索栏。一切正常,但在播放歌曲时,歌曲卡住或稍有停顿,这发生在我在计时器中设置的时间段之后,请帮我解决它。这是我的代码:
public class MainActivity extends AppCompatActivity {
MediaPlayer mediaPlayer;
AudioManager audioManager;
public void play(View view){
mediaPlayer.start();
}
public void pause(View view){
mediaPlayer.pause();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
mediaPlayer = MediaPlayer.create(this, R.raw.gaana);
SeekBar volumeControl = (SeekBar) findViewById(R.id.volumeSeekBar);
volumeControl.setMax(maxVolume);
volumeControl.setProgress(currentVolume);
volumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,progress,0);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
SeekBar scrubSeekBar = (SeekBar) findViewById(R.id.scrubSeekbar);
scrubSeekBar.setMax(mediaPlayer.getDuration());
scrubSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mediaPlayer.seekTo(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
scrubSeekBar.setProgress(mediaPlayer.getCurrentPosition());
}
},0,1000);
}
}
解决方案
推荐阅读
- android - ViewPager 和 YouTube API
- android - onClick 不抓 int 增加另一个 onClick 内?
- cassandra - 使用两个单独的 OSE 集群的 Cassandra 多直流设置
- google-apps-script - Custom Email based on Cell values in google sheets
- java - 启动期间的 Elastic Search AllPermission 安全管理器问题
- javascript - 使用变量从 mongodb 中查找数据
- sql - sql数据类型转换有多贵?
- javascript - 如何关闭证书身份验证弹出窗口
- java - EndpointHandlerMapping:在日志中没有找到消息的处理方法
- c - CS50 Vigenere, code is almost done but I don't know what's missing?