最初,我有一个 MediaPlayer mPlayers 来播放/暂停/停止我的音频文件。现在,我正在尝试为我的媒体添加一个搜索栏。我尝试使用线程,这就是我想出的:
在 onCreate() :
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
mPlayer.seekTo(progress);
}
////........Omitted Code..........\\\\
//At the very end of the method:
seekThread = new Thread(this); //My Activity implements:Runnable
seekThread.start();
然后,我实现了一种方法run()
来每 1 秒更新一次搜索栏:
public void run() {
try {
while(mPlayer != null){
int currentPosition = mPlayer.getCurrentPosition();
Message msg = new Message();
msg.what = currentPosition;
threadHandler.sendMessage(msg);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private Handler threadHandler = new Handler(){
public void handleMessage(Message msg){
seekBar.setProgress(msg.what);
}
};
但是,在我的HTC Magic中,音频运行效率低下。有些话是重复的。似乎搜索栏每隔一段时间就会向后退一点。
为了让您更好地理解问题,让我们这样说:如果音频说:abcdefghijklmn,那么它将是这样的:abccdeffghijjklmnn。
您对我的线程有什么改进建议吗?我做对了吗?