在Android中,我们可以使用媒体播放器在设备上播放歌曲,使用游标获取曲目信息(操作系统会跟踪)。我的问题是,这些Java的等价物是什么?
注意:我看到有人提到JavaFX,但是默认情况下这似乎没有安装JVM,因此我的程序将不再是跨平台的。
有什么建议吗?
注意:这些都是本地文件,但它们可能是任何音频文件类型。
答案 0 :(得分:7)
我将提供有关Java音乐播放器的JavaFX相关解决方案的信息,因为我认为这是一项用于此任务的好技术。
支持的平台和格式
它们可能是任何音频文件类型。
javafx.scene.media javadoc中记录了JavaFX支持的音频类型。支持的JavaFX 2.2格式是各种容器中的MP3,AAC和PCM,如mp3,mp4和wav文件。不支持其他格式,如Ogg Theora - 因此,如果您需要这样的格式,则需要与JavaFX 2.2不同的解决方案。
我见过有人提到JavaFX,但默认情况下这似乎没有安装JVM,因此我的程序将不再是跨平台的
默认情况下,JavaFX随Oracle Java运行时一起安装,因为Java 7更新6和JavaFX 2.2在OS X,Windows和Linux上运行。目前还没有广泛可用的解决方案在移动平台上运行JavaFX(虽然将来可能会有所改变)。
有关将JavaFX与Java 7结合使用的更多信息,请参阅我对Compiling and running with JavaFX 2.1以及JavaFX Deployment Guide的回答。
获取跟踪信息(操作系统跟踪)
大多数曲目信息实际上是在媒体文件中而不是在OS数据库中编码的。您可以从JavaFX播放的媒体文件中retrieve metadata。根据{{3}}中的定义,支持从媒体文件中解析有限数量的元数据。请注意,并非所有媒体都包含所有元数据我测试了media documentation,并且能够成功地从中提取大量元数据。来自iTunes的测试aac编码m4a文件的元数据大多是空的。因此结果取决于正在使用的媒体文件。
示例播放器
我在JavaFX中创建了一个a free mp3 file from amazon,它播放目录中的音频文件,显示每首歌曲的元数据。
java2s还托管sample music player的作者创建的source for a media player。这可能是比我的代码更好的参考,因为我的快速破解,而专业来源来自专业出版的书。
其他问题
我们这些人在Linux上没有使用Oracle的JRE的建议吗?
Oracle JRE在Linux上可用,但如果您不想使用它,则可以为Pro JavaFX 2 book构建openjfx并使用它,或者您可以使用Oracle JRE开发应用程序并使用它JavaFX打包工具将其分发为openjdk,因此它没有外部JRE依赖。