【发布时间】:2017-08-15 10:53:24
【问题描述】:
我正在开发一个简单的音频播放器,它会在我暂停/停止播放时显示音频播放了多长时间(编辑:例如,如果我在 52 秒处重新开始音乐,然后在 55 秒处暂停,则吐司说“3”)。截至目前,我正在使用这个:
long startTime = System.currentTimeMillis();
long stopTime = System.currentTimeMillis();
Toast.makeText(getApplicationContext(), "Elapsed time was " + ((stopTime - startTime)/1000) + " seconds.", Toast.LENGTH_LONG).show();}
显示时差。我遇到的问题是 startTime 是从我第一次点击播放开始的,而不是最近的时间(只是不断地计数)。
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button playMusic;
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.adele);
mediaPlayer.setLooping(true);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer mp){
int duration = mp.getCurrentPosition()/1000;
Toast.makeText(getApplicationContext(), "Duration:" + duration + " seconds", Toast.LENGTH_LONG).show();
}
});
playMusic = (Button) findViewById(R.id.playButton);
playMusic.setOnClickListener(new View.OnClickListener(){
long startTime = System.currentTimeMillis();
@Override
public void onClick(View v){
if (mediaPlayer.isPlaying()) {
pauseMusic();
long stopTime = System.currentTimeMillis();
Toast.makeText(getApplicationContext(), "Elapsed time was " + ((stopTime - startTime)/1000) + " seconds.", Toast.LENGTH_LONG).show();}
else {
startMusic();
}
}
});
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}
public void pauseMusic(){
if (mediaPlayer !=null){
mediaPlayer.pause();
playMusic.setText(getString(R.string.button_start));
}
}
public void startMusic(){
if (mediaPlayer != null){
mediaPlayer.start();
playMusic.setText(getString(R.string.button_pause));
}
}
protected void onDestroy(){
if (mediaPlayer !=null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
super.onDestroy();
}
}
【问题讨论】: