【问题标题】:Efficient way to update mm:ss from a playing MP3 file从播放的 MP3 文件更新 mm:ss 的有效方法
【发布时间】:2009-11-04 17:29:09
【问题描述】:

我在这里重新发明了轮子,但由于我是初学者程序员,我很好奇最好的方法......

作为 Android 应用程序的一部分,我正在开发一个非常简单的媒体播放器。它播放文件,我想要一个 m:s 计时器,这样用户就可以看到他们在文件中的距离(例如“04:56”)。 我可能错过了显而易见的事情,但是最好的方法是什么?

一种方法是生成一个休眠 1000 毫秒的新线程,然后调用 MediaPlayer.getCurrentPosition() 并更新 UI。然而,这似乎有点荒谬——我的线程不能保证每秒都回来,所以我将显示一个不准确的时间。一定有更好的方法吗?

教育我(或链接给我)。

【问题讨论】:

    标签: android media


    【解决方案1】:

    只需使用Handler#postDelayed()View#postDelayed() 进行每秒一次的更新。这使您不必分叉一个线程,更不用说在它之后进行清理了。

    Here 是一个项目,该项目使用该特定技术来实现您想要的目的:根据 MediaPlayer 进度更新时间计数器。

    【讨论】:

    • 感谢这个例子——非常有用!这让我开始思考……假设我正在编写一个闹钟程序,它会显示一个闹钟,让我在早上 7 点叫醒我;最有效的方法是什么?所有执行此类操作的应用程序真的都在进行睡眠和检查吗?
    • 对于闹钟,我会使用 AlarmManager。这样,即使您的应用程序当前未运行,您也将在所需时间获得控制权。但是,AlarmManager 并非设计用于每秒检查一次的场景,例如您的 MM:SS 计数器。
    【解决方案2】:

    另一种选择可能是在音乐开始时启动一个独立的计时器。通过每五秒左右调用一次 MediaPlayer.getCurrentPosition() 使其“同步”,以确保时间保持准确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多