我已经看到 GMOTE 2.0 如何在 Android 上运行。在计算机上访问媒体文件真的很酷,让它们播放让它变得更酷,还有它的其他功能。
现在,我想为 android 和 PC 制作一个程序。我想做的就像 GMOTE 2.0,但我只想要它在 PC 上播放 mp3 文件的方式。我的 PC 和 Android 在同一个 newtork(同一个路由器)上。
有人可以就如何开始以及我需要什么给我建议吗?请帮助我,我不知道这将如何开始。是否可以通过端口进行通信?(像 TCP 一样?)
应该不难。基本上,您需要创建两个组件:
远程控制驱动程序:此应用程序将在计算机上运行。它至少应该能够做这些事情:
所有歌曲的导出列表。这取决于你,它应该有多复杂。我建议以 XML 格式从计算机中导出所有歌曲。它可能看起来像这样:
<?xml version="1.0" encoding="UTF-8" ?>
<list>
<artist name="Fear Factory">
<album name="Demanufacture" year="1995">
<song name="Demanufacture" track="01" filename="C:\MyMusic\FearFactory\01. Demanufacture.mp3" />
<song name="Self-bias resistor" track="02" filename="C:\MyMusic\FearFactory\01. Self-bias resistor.mp3" />
</album>
</artist>
<artist name="Sybreed">
<album name="Slave design">
<song name="Bioactive" track="01" filename="C:\MyMusic\Sybreed\bioactive.mp3" />
</album>
</artist>
</list>
要生成这样的列表,您需要定义一些本地文件夹的路径。现在您可以浏览整个文件夹并读取每个文件的名称。然后您可以使用一些库并从这些文件中读取 ID3 标签(其中包含艺术家的姓名等)。
生成这个列表应该很容易。
创建一个网络接口,它将监听某个 TCP 端口并等待命令。如果它收到一些命令,它只会进行一些操作或发送响应。您可能需要这些类型的命令:
PLAY_SONG:接收完整的文件名(如 XML 所示)并开始在后台播放该歌曲。有一些图书馆可以为您做到这一点。Slick2D 示例:
new Sound("some_music.wav").play();
它会在另一个线程中自动启动,因此您不必担心。但是,Slick2D 主要用于游戏开发,因此最好寻找其他东西。
另一种可能性是启动一些媒体播放器(或控制台媒体播放器)。但我不建议这样做,因为控制歌曲是否正在播放或暂停会更加困难。
PAUSE_SONG
这个应用程序不必是图形的(但它会很好)。最简单和最丑陋的版本可能是这样的:
public static void main(String args[]) {
TCPServer server = new TCPServer(999);
Sound sound = null;
for (;;) {
String command = server.accept();
if (command.equals("UPDATE_DATABASE)) {
// generate xml
server.sendData(xml.getRawContent());
} else if (command.equals("PLAY_SONG")) {
String filename = server.accept();
sound = new Sound(filename);
sound.play();
} else if (command.equals("PAUSE_SONG")) {
if (sound.playing()) {
sound.pause();
} else {
sound.play();
}
}
}
}
我用过的大多数类可能都不存在。请记住,这只是一个非常简化的示例。
手机申请。这取决于你。您需要创建一个能够与计算机通信的网络客户端。这是最简单的。您只需发送“UPDATE_DATABASE”之类的内容并以 XML 形式接收一些数据。然后,您将使用一些库(可能是 DOM 解析器)并向用户显示歌曲列表(也可以将其分类为类别)。
当用户点击某首歌时,它会读取它的文件名(参见上面 XML 中的那个属性)。还有什么比发送诸如“PLAY_SONG C:\MyMusic....”之类的内容更简单的呢?好吧,也许一件事 - 暂停歌曲。您可能会自己弄清楚如何做到这一点。:-)
这应该就是全部了。我希望我没有忘记一些重要的事情。