(Android)如何在我的音乐播放器上显示时间

时间:2021-09-02 21:25:49

The music can play normally but I can't show time of music on my music Player.How can I do?

音乐可以正常播放但我无法在我的音乐播放器上显示音乐时间。我该怎么办?

In main class

在主要班级

 public void onClick(View v) {

     if (mMedia.isPlaying()) {
            txtView.setText("Playing : music.mp3....");
                mMedia.pause();
            } else {
                txtView.setText("pause : music.mp3....");
                mMedia.start();
            }
        }
private void UpdateseekChange(View v){
    if(mMedia.isPlaying()){
        SeekBar sb = (SeekBar)v;
        mMedia.seekTo(sb.getProgress());
    }

3 个解决方案

#1


7  

This one should work:

这应该工作:

public void onClick(View v) {

    if (mMedia.isPlaying()) {
        txtView.setText("Playing : music.mp3....");
        mMedia.pause();
    } else {
        txtView.setText("pause : music.mp3....");
        mMedia.start();
        txtView.post(mUpdateTime);
    }
}

private Runnable mUpdateTime = new Runnable() {
    public void run() {
        int currentDuration;
        if (mMedia.isPlaying()) {
            currentDuration = mp.getCurrentPosition();
            updatePlayer(currentDuration);
            txtView.postDelayed(this, 1000);
        }else {
            txtView.removeCallbacks(this);
        }
    }
};

private void updatePlayer(int currentDuration){
    txtView.setText("" + milliSecondsToTimer((long) currentDuration));
}

/**
 * Function to convert milliseconds time to Timer Format
 * Hours:Minutes:Seconds
 * */
public  String milliSecondsToTimer(long milliseconds) {
    String finalTimerString = "";
    String secondsString = "";

    // Convert total duration into time
    int hours = (int) (milliseconds / (1000 * 60 * 60));
    int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
    int seconds = (int) ((milliseconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);
    // Add hours if there
    if (hours > 0) {
        finalTimerString = hours + ":";
    }

    // Prepending 0 to seconds if it is one digit
    if (seconds < 10) {
        secondsString = "0" + seconds;
    } else {
        secondsString = "" + seconds;
    }

    finalTimerString = finalTimerString + minutes + ":" + secondsString;

    // return timer string
    return finalTimerString;
}

You need of course to remove runnable when the track is finished.

当然,您需要在轨道完成时删除runnable。

#2


1  

Try this code coders :)

试试这个代码编码器:)

//Get duration
long totalDuration = mediaPlayerOBJ.getDuration();
//Get current time
long currentDuration = mediaPlayerOBJ.getCurrentPosition();

textViewCurrentTime.setText(milliSecondsToTimer(currentDuration));
textViewDuration.setText(milliSecondsToTimer(totalDuration));

//Here is function to convert milliseconds to timer

public String milliSecondsToTimer(long milliseconds) {
String finalTimerString = "";
String secondsString = "";

// Convert total duration into time
int hours = (int) (milliseconds / (1000 * 60 * 60));
int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
int seconds = (int) ((milliseconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);
// Add hours if there
 if (hours > 0) {
    finalTimerString = hours + ":";
}

// Prepending 0 to seconds if it is one digit
  if (seconds < 10) {
    secondsString = "0" + seconds;
}   else {
    secondsString = "" + seconds;
}

finalTimerString = finalTimerString + minutes + ":" + secondsString;

// return timer string
return finalTimerString;
}

#3


0  

It's the all code page of the application media player.How can I do?

In main class

在主要班级

private MediaPlayer mMedia;
private Handler handler = new Handler();
private SeekBar seekBar;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(mMedia != null){
        mMedia.release();
    }

    final TextView txtView = (TextView)findViewById(R.id.textView1);
    txtView.setText("Source : music.mp3");

    /* Resource in R.
     * mMedia = MediaPlayer.create(this, R.raw.music);
     * mMedia.start();
     */

    /*
     * from DataSource
     * mMedia = new MediaPlayer();
     * mMedia.setDataSource("http://www.thaicreate.com/music/mymusic.mp3");
     * mMedia.start();
     *
     */
    mMedia = MediaPlayer.create(this, R.raw.music);

    seekBar = (SeekBar)findViewById(R.id.seekBar1);
    seekBar.setMax(mMedia.getDuration());
    seekBar.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            UpdateseekChange(v);

            return false;
        }
    });


    final Button btn1 = (Button) findViewById(R.id.button1); // Start



    // Start
    btn1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            if (mMedia.isPlaying()) {
            txtView.setText("Playing : music.mp3....");
                mMedia.pause();
            } else {
                txtView.setText("pause : music.mp3....");
                mMedia.start();
            }
        }
    });


}

private void UpdateseekChange(View v){
    if(mMedia.isPlaying()){
        SeekBar sb = (SeekBar)v;
        mMedia.seekTo(sb.getProgress());
    }
}

public void startPlayProgressUpdater() {
    seekBar.setProgress(mMedia.getCurrentPosition());

    if (mMedia.isPlaying()) {
        Runnable notification = new Runnable() {
            public void run() {
                startPlayProgressUpdater();
            }
        };
        handler.postDelayed(notification,1000);
    }
}

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if(mMedia != null && fromUser){
        mMedia.seekTo(progress * 1000);
    }
}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if(mMedia != null){
        mMedia.release();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
 }

}

#1


7  

This one should work:

这应该工作:

public void onClick(View v) {

    if (mMedia.isPlaying()) {
        txtView.setText("Playing : music.mp3....");
        mMedia.pause();
    } else {
        txtView.setText("pause : music.mp3....");
        mMedia.start();
        txtView.post(mUpdateTime);
    }
}

private Runnable mUpdateTime = new Runnable() {
    public void run() {
        int currentDuration;
        if (mMedia.isPlaying()) {
            currentDuration = mp.getCurrentPosition();
            updatePlayer(currentDuration);
            txtView.postDelayed(this, 1000);
        }else {
            txtView.removeCallbacks(this);
        }
    }
};

private void updatePlayer(int currentDuration){
    txtView.setText("" + milliSecondsToTimer((long) currentDuration));
}

/**
 * Function to convert milliseconds time to Timer Format
 * Hours:Minutes:Seconds
 * */
public  String milliSecondsToTimer(long milliseconds) {
    String finalTimerString = "";
    String secondsString = "";

    // Convert total duration into time
    int hours = (int) (milliseconds / (1000 * 60 * 60));
    int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
    int seconds = (int) ((milliseconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);
    // Add hours if there
    if (hours > 0) {
        finalTimerString = hours + ":";
    }

    // Prepending 0 to seconds if it is one digit
    if (seconds < 10) {
        secondsString = "0" + seconds;
    } else {
        secondsString = "" + seconds;
    }

    finalTimerString = finalTimerString + minutes + ":" + secondsString;

    // return timer string
    return finalTimerString;
}

You need of course to remove runnable when the track is finished.

当然,您需要在轨道完成时删除runnable。

#2


1  

Try this code coders :)

试试这个代码编码器:)

//Get duration
long totalDuration = mediaPlayerOBJ.getDuration();
//Get current time
long currentDuration = mediaPlayerOBJ.getCurrentPosition();

textViewCurrentTime.setText(milliSecondsToTimer(currentDuration));
textViewDuration.setText(milliSecondsToTimer(totalDuration));

//Here is function to convert milliseconds to timer

public String milliSecondsToTimer(long milliseconds) {
String finalTimerString = "";
String secondsString = "";

// Convert total duration into time
int hours = (int) (milliseconds / (1000 * 60 * 60));
int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
int seconds = (int) ((milliseconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);
// Add hours if there
 if (hours > 0) {
    finalTimerString = hours + ":";
}

// Prepending 0 to seconds if it is one digit
  if (seconds < 10) {
    secondsString = "0" + seconds;
}   else {
    secondsString = "" + seconds;
}

finalTimerString = finalTimerString + minutes + ":" + secondsString;

// return timer string
return finalTimerString;
}

#3


0  

It's the all code page of the application media player.How can I do?

In main class

在主要班级

private MediaPlayer mMedia;
private Handler handler = new Handler();
private SeekBar seekBar;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(mMedia != null){
        mMedia.release();
    }

    final TextView txtView = (TextView)findViewById(R.id.textView1);
    txtView.setText("Source : music.mp3");

    /* Resource in R.
     * mMedia = MediaPlayer.create(this, R.raw.music);
     * mMedia.start();
     */

    /*
     * from DataSource
     * mMedia = new MediaPlayer();
     * mMedia.setDataSource("http://www.thaicreate.com/music/mymusic.mp3");
     * mMedia.start();
     *
     */
    mMedia = MediaPlayer.create(this, R.raw.music);

    seekBar = (SeekBar)findViewById(R.id.seekBar1);
    seekBar.setMax(mMedia.getDuration());
    seekBar.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            UpdateseekChange(v);

            return false;
        }
    });


    final Button btn1 = (Button) findViewById(R.id.button1); // Start



    // Start
    btn1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            if (mMedia.isPlaying()) {
            txtView.setText("Playing : music.mp3....");
                mMedia.pause();
            } else {
                txtView.setText("pause : music.mp3....");
                mMedia.start();
            }
        }
    });


}

private void UpdateseekChange(View v){
    if(mMedia.isPlaying()){
        SeekBar sb = (SeekBar)v;
        mMedia.seekTo(sb.getProgress());
    }
}

public void startPlayProgressUpdater() {
    seekBar.setProgress(mMedia.getCurrentPosition());

    if (mMedia.isPlaying()) {
        Runnable notification = new Runnable() {
            public void run() {
                startPlayProgressUpdater();
            }
        };
        handler.postDelayed(notification,1000);
    }
}

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if(mMedia != null && fromUser){
        mMedia.seekTo(progress * 1000);
    }
}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    if(mMedia != null){
        mMedia.release();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
 }

}