1
元々、私はオーディオファイルを再生/一時停止/停止するMediaPlayer mPlayersを持っていました。今、私は自分のメディアにシークバーを追加しようとしています。 ()のonCreateでオーディオseekBarスレッドの問題?
:私はスレッドを使用してみました、これは私が思い付いたものです
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);
}
};
:
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();
はその後、私は私のシークバーを更新するごとに1秒の方法run()
を実装しました
ただし、私ののHTCマジックでは、オーディオは非効率的に実行されます。いくつかの言葉が繰り返されます。シークバーが少しずつ戻ってくるようです。
この問題をよく理解するために、これを言いましょう:オーディオにabcdefghijklmnというメッセージが表示された場合、abccdeffghijjklmnnのようになります。
私のスレッドに何か改善がありますか?私はそれを正しくしていますか?
ありがとうございました。 'fromUser'変数をチェックする必要があるようです。今は素晴らしい作品です。 – iTurki