使用媒体播放器来播放音频文件。
一切工作正常,但需要的TextView被更新的音频经过时间。
textview.setText(mediaplayer.getCurrentPosition()/100000.0).toString();
这给双重价值,但不到一分钟,如果结束时间是越来越经过时间1分钟它显示0:60 ...但它应该1:00 ...
是否有任何其它的方式来显示基于搜索条的进步所经过的时间?
谢谢。
使用媒体播放器来播放音频文件。
一切工作正常,但需要的TextView被更新的音频经过时间。
textview.setText(mediaplayer.getCurrentPosition()/100000.0).toString();
这给双重价值,但不到一分钟,如果结束时间是越来越经过时间1分钟它显示0:60 ...但它应该1:00 ...
是否有任何其它的方式来显示基于搜索条的进步所经过的时间?
谢谢。
该工程─回答另一篇文章采取: 如何正确显示的MediaPlayer的位置/时间?
日期格式适用于日期,而不是时间间隔。 所以,如果你得到1秒的位置,数据格式将此解释为是指日期/时间开始日历后1秒。
private String getTimeString(long millis) {
StringBuffer buf = new StringBuffer();
int hours = millis / (1000*60*60);
int minutes = ( millis % (1000*60*60) ) / (1000*60);
int seconds = ( ( millis % (1000*60*60) ) % (1000*60) ) / 1000;
buf
.append(String.format("%02d", hours))
.append(":")
.append(String.format("%02d", minutes))
.append(":")
.append(tring.format("%02d", seconds));
return buf.toString();
}
然后像做
totalTime.setText(getTimeString(duration));
currentTime.setText(getTimeString(position));
音乐示例应用程序有一个类MusicUtils :
/* Try to use String.format() as little as possible, because it creates a
* new Formatter every time you call it, which is very inefficient.
* Reusing an existing Formatter more than tripled the speed of
* makeTimeString().
* This Formatter/StringBuilder are also used by makeAlbumSongsLabel()
*/
private static StringBuilder sFormatBuilder = new StringBuilder();
private static Formatter sFormatter = new Formatter(sFormatBuilder, Locale.getDefault());
private static final Object[] sTimeArgs = new Object[5];
public static String makeTimeString(Context context, long secs) {
String durationformat = context.getString(
secs < 3600 ? R.string.durationformatshort : R.string.durationformatlong);
/* Provide multiple arguments so the format can be changed easily
* by modifying the xml.
*/
sFormatBuilder.setLength(0);
final Object[] timeArgs = sTimeArgs;
timeArgs[0] = secs / 3600;
timeArgs[1] = secs / 60;
timeArgs[2] = (secs / 60) % 60;
timeArgs[3] = secs;
timeArgs[4] = secs % 60;
return sFormatter.format(durationformat, timeArgs).toString();
}
您可以使用。
但carlovv的解决方案也可以工作,如果你除以1000 getCurrentPosition()的结果,该方法返回毫秒。
这是在strings.xml善有善报
<string translatable="false" name="durationformatshort">
<xliff:g id="format">%2$d:%5$02d</xliff:g>
</string>
<string translatable="false" name="durationformatlong">
<xliff:g id="format">%1$d:%3$02d:%5$02d</xliff:g>
</string>
你可以转换成getCurrentPosition日期和使用日期格式来设置输出字符串。
Date d = new Date();
d.setTime(mediaplayer.getCurrentPosition());
private final SimpleDateFormat timeFormat = new SimpleDateFormat("HH.mm");
String time = timeFormat.format(d).toString();