4

現在、PC で MediaPlayer (Rythmbox など) を制御する Android 用の小さなリモート アプリを作成しようとしています。

ほとんどのメディア プレーヤーは、私のキーボードの特殊キー (「再生/一時停止」や「次/前」など) を理解しています。私の考えでは、Android アプリはコマンド (「一時停止」など) を PC に送信します。PC では、このコマンドを受け取り、この特別なボタンのキー押下をシミュレートする通常の Java アプリケーションを実行します。

利点は、この特別なキーをサポートするすべてのプレーヤーのすべてのプラットフォームでこのアプリを使用できることです (そして、それらはほとんどすべての新しい USB キーボードに搭載されています)。

-class の定数を JavaDocs で検索しましたが、KeyEvent見つかりません。これらのボタンのいずれかを押すことをシミュレートする方法を知っている人はいますか? Javaでも可能ですか?

他に解決策がない限り、追加のライブラリも問題ありません。

また、キープレスをシミュレートするために a を使用する必要があることもわかっRobotています。これは、キーボードのすべての通常のキーで機能します。これらの特殊キーのキー押下をシミュレートする方法が見つかりません。

4

3 に答える 3

3

したがって、純粋なJavaではこれを行うことはできないと思います。特別なキーがどのキーコードを持っているかを調べるために何か他のことを試みましたが、この小さなプログラムは0それらのキーに対してのみ戻ります(「通常の」キーに対してのみ機能します)。

public class GetKeycode implements KeyListener{

    private JFrame f;
    private JLabel feld;

    public GetKeycode(){
        f = new JFrame("GetKeycode");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.addKeyListener(this);
        feld = new JLabel();
        f.add(feld);
        f.pack();
        f.setVisible(true);
    }

    @Override
    public void keyReleased(KeyEvent e) {
        feld.setText(e.getKeyCode()+"");        
    }

    public static void main(String[] args) {
        new GetKeycode();
    }

    // Unused:
    @Override public void keyPressed(KeyEvent e) {}
    @Override public void keyTyped(KeyEvent arg0) {}

}

これがJREの将来のバージョンで実装されることを願っています。しかし、現時点では、これに対する解決策はないようです。

とにかくすべての答えをありがとう。

于 2011-06-12T19:25:26.230 に答える
1

OSに依存するキーコードをに送信しようとしましたRobotか?マルチメディアキーは、残念ながらJavaではまだ直接サポートされていません。Java1.7でもサポートされていませんが、のキーコード定義のほとんどは、java.awt.event.KeyCodeネイティブのWindowsペンダントと同じ値を持っています。Robotは、未知のキーコードをJavaで直接フィルタリングしませんが、ネイティブバックエンドがそれらをどのように処理するかを決定します。したがって、少なくとも特定のプラットフォームで機能する可能性があります。

MUTEキーコードはになります0xADこれがWindowsキーコードのリストです。

于 2011-06-04T11:30:02.800 に答える
-1
VK_MEDIA_PLAY_PAUSE
VK_VOLUME_MUTE
VK_VOLUME_DOWN
VK_MEDIA_NEXT_TRACK
VK_MEDIA_PREV_TRACK

Java を使用して Windows アプリを制御する

問題を一時的に解決するには、「Rhythmbox android remote」をグーグルで検索してください。すでにいくつかの素晴らしいプロジェクトがあります。

于 2011-06-10T22:52:44.737 に答える