4

我目前正在尝试为 Android 创建一个小的远程应用程序来控制我 PC 上的 MediaPlayer(如 Rythmbox)。

大多数媒体播放器都能理解我键盘上的特殊键(如“播放/暂停”或“下一个/上一个”)。我的想法是 Android 应用程序向 PC 发送命令(如“暂停”)。在 PC 上运行一个普通的 Java 应用程序,它接收这个命令并模拟这个特殊按钮的按键。

优点是您可以在所有平台上为支持此特殊键的每个播放器使用此应用程序(并且它们几乎在每个新的 USB 键盘上)。

我在 JavaDocs 中搜索了KeyEvent-class 中的常量,但我找不到。有谁知道如何模拟按下这些按钮之一,如果这甚至可以用 Java 实现?

只要没有其他解决方案,我也可以使用其他库。

另外,我知道我应该使用 aRobot来模拟按键,这适用于我键盘上的所有普通键。我根本找不到任何方法来模拟那些特殊键上的按键。

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

您是否已经尝试将依赖于操作系统的密钥代码发送到Robot?不幸的是,Java 还没有直接支持多媒体键,甚至在 Java 1.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 应用程序

要暂时解决您的问题,只需 google “rhythmbox android remote”。已经有一些很棒的项目了。

于 2011-06-10T22:52:44.737 回答