【问题标题】:How do I correctly display the position/duration of a MediaPlayer?如何正确显示 MediaPlayer 的位置/持续时间?
【发布时间】:2011-07-29 18:25:10
【问题描述】:

嗨 我想以简单的日期格式显示玩家位置和玩家持续时间。那是。 00:00:01/00:00:06。第一部分是玩家的当前位置,第二部分是持续时间。 我使用SimpleDateFormat 尝试以这种格式显示持续时间和位置,但它显示输出为05:30:00/05:30:06

这是我正在使用的代码:

time1 = new SimpleDateFormat("HH:mm:ss");
currentTime.setText("" + time1.format(player.getCurrentPosition());

如何正确打印位置和持续时间? (它显示不应该存在的小时/分钟)。

请帮帮我,Swathi Daruri。

【问题讨论】:

    标签: android time formatting media-player


    【解决方案1】:

    DateFormat 适用于日期,不适用于时间间隔。因此,如果您获得 1 秒的位置,DateFormat 会将其解释为日期/时间是日历开始后 1 秒(即 1970 年 1 月 1 日)。

    你需要做类似的事情

    private String getTimeString(long millis) {
        StringBuffer buf = new StringBuffer();
    
        int hours = (int) (millis / (1000 * 60 * 60));
        int minutes = (int) ((millis % (1000 * 60 * 60)) / (1000 * 60));
        int seconds = (int) (((millis % (1000 * 60 * 60)) % (1000 * 60)) / 1000);
    
        buf
            .append(String.format("%02d", hours))
            .append(":")
            .append(String.format("%02d", minutes))
            .append(":")
            .append(String.format("%02d", seconds));
    
        return buf.toString();
    }
    

    然后做类似的事情

    totalTime.setText(getTimeString(duration));
    currentTime.setText(getTimeString(position));
    

    【讨论】:

    • 非常感谢.. 它奏效了。我以为我可以通过简单的日期格式来实现
    • 你需要转换整数int hours = (int) (millis / (1000*60*60));
    • 这样的节省时间的逻辑
    • 这有帮助。谢谢
    【解决方案2】:

    试试这个

    fun getDurationString(durationMs: Long, negativePrefix: Boolean): String {
        val hours = TimeUnit.MILLISECONDS.toHours(durationMs)
        val minutes = TimeUnit.MILLISECONDS.toMinutes(durationMs)
        val seconds = TimeUnit.MILLISECONDS.toSeconds(durationMs)
    
        return if (hours > 0) {
            format(
                Locale.getDefault(), "%s%02d:%02d:%02d",
                if (negativePrefix) "- " else "",
                hours,
                minutes - TimeUnit.HOURS.toMinutes(hours),
                seconds - TimeUnit.MINUTES.toSeconds(minutes)
            )
        } else format(
            Locale.getDefault(), "%s%02d:%02d",
            if (negativePrefix) "- " else "",
            minutes,
            seconds - TimeUnit.MINUTES.toSeconds(minutes)
        )
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多