3

GMOTE 2.0 が Android でどのように動作するかを見てきました。コンピューター上のメディア ファイルへのアクセスは非常に優れており、それらを再生することで、コンピューターのその他の機能がよりクールになります。

今、Android用とPC用のプログラムを作りたいと思っています。私が作りたいのは GMOTE 2.0 のようなものですが、PC で mp3 ファイルを再生する方法だけが欲しいです。そして、私の PC と Android は同じ newtork (同じルーター) 上にあります。

これをどのように開始するか、何が必要かについてアドバイスをいただけますか? これがどのように開始されるのかわかりません。ポート経由での通信は可能ですか? (TCPのような?)

4

1 に答える 1

1

難しくないはずです。基本的に、次の 2 つのコンポーネントを作成する必要があります。

  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がメインなので、別のものを探したほうがいいでしょう。

        もう 1 つの可能性は、メディア プレーヤー (またはコンソール メディア プレーヤー) を起動することです。しかし、曲を再生しているかどうかを制御したり、一時停止したりするのがはるかに難しくなるため、お勧めしません。

      • 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....」のようなものを送信するよりも簡単なことは何ですか? ええと、多分 1 つのこと - 曲を一時停止します。その方法は、おそらく自分で考え出すでしょう。:-)

それだけです。大事なことを忘れていないことを願っています。

于 2013-08-23T15:09:21.313 に答える