3

我已经看到 GMOTE 2.0 如何在 Android 上运行。在计算机上访问媒体文件真的很酷,让它们播放让它变得更酷,还有它的其他功能。

现在,我想为 android 和 PC 制作一个程序。我想做的就像 GMOTE 2.0,但我只想要它在 PC 上播放 mp3 文件的方式。我的 PC 和 Android 在同一个 newtork(同一个路由器)上。

有人可以就如何开始以及我需要什么给我建议吗?请帮助我,我不知道这将如何开始。是否可以通过端口进行通信?(像 TCP 一样?)

4

1 回答 1

1

应该不难。基本上,您需要创建两个组件:

  1. 远程控制驱动程序:此应用程序将在计算机上运行。它至少应该能够做这些事情:

    • 所有歌曲的导出列表。这取决于你,它应该有多复杂。我建议以 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 端口并等待命令。如果它收到一些命令,它只会进行一些操作或发送响应。您可能需要这些类型的命令:

      • UPDATE_DATABASE:它将创建如上所示的 XML 并将其发送到您的手机。
      • PLAY_SONG:接收完整的文件名(如 XML 所示)并开始在后台播放该歌曲。有一些图书馆可以为您做到这一点。Slick2D 示例:

        new Sound("some_music.wav").play();
        

        它会在另一个线程中自动启动,因此您不必担心。但是,Slick2D 主要用于游戏开发,因此最好寻找其他东西。

        另一种可能性是启动一些媒体播放器(或控制台媒体播放器)。但我不建议这样做,因为控制歌曲是否正在播放或暂停会更加困难。

      • PAUSE_SONG

      • GET_CURRENT_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();
                }
            }
        }
    }
    

    我用过的大多数类可能都不存在。请记住,这只是一个非常简化的示例。

  2. 手机申请。这取决于你。您需要创建一个能够与计算机通信的网络客户端。这是最简单的。您只需发送“UPDATE_DATABASE”之类的内容并以 XML 形式接收一些数据。然后,您将使用一些库(可能是 DOM 解析器)并向用户显示歌曲列表(也可以将其分类为类别)。

    当用户点击某首歌时,它会读取它的文件名(参见上面 XML 中的那个属性)。还有什么比发送诸如“PLAY_SONG C:\MyMusic....”之类的内容更简单的呢?好吧,也许一件事 - 暂停歌曲。您可能会自己弄清楚如何做到这一点。:-)

这应该就是全部了。我希望我没有忘记一些重要的事情。

于 2013-08-23T15:09:21.313 回答