2
我正在製作一個簡單的音頻播放器,它將顯示當我暫停/停止音頻時播放音頻的時間(編輯:例如,如果我在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();
}
}
嗨Android的怪胎,我很感激幫助。當我更改代碼時,現在只是總是說「已經過去的時間是1490313723秒」,不管我播放歌曲的時間有多短或多長。我改變了你的startTime = mp1 ....到startTime = mediaPlayer ....因爲mp1不是'我的代碼中的一個變量,(我認爲,雖然我是新手),它的意思是mediaPlayer。另外,如果我正確地閱讀它,我把「long startTime = System.currentTimeMillis();」和「long stopTime = System.currentTimeMillis();」在「private MediaPlayer mediaPlayer」下面在我上面的代碼中。 – Robert
好的,我想出了我相信你有什麼是使用當前歌曲位置作爲敬酒的時間,因爲它已經播放了多長時間。這是一個很好的解決方案。不幸的是,我想我沒有很好地表達我想要的東西。我試圖要求能夠在開始/暫停(即,如果我重新開始52秒到一首歌曲,然後暫停在55秒,敬酒說「3」)之間有多長時間。 – Robert
我希望這對你有所幫助。我也做過相同的編輯。 –