Специальные клавиши KeyEvent (например, немой)

В настоящее время я пытаюсь создать небольшое удаленное приложение для Android для управления MediaPlayer (например, Rythmbox) на моем ПК.

Большинство медиа-плееров понимают специальные клавиши на моей клавиатуре (например, «play / pause» или «next / previous»). Моя идея в том, что приложение Android отправляет на ПК команду (например, «паузу»). На ПК запускается обычное Java-приложение, которое получает эти команды и имитирует нажатие клавиши этой специальной кнопки.

Преимущество в том, что вы можете использовать это приложение на всех платформах для каждого игрока, который поддерживает эти специальные клавиши (и они находятся почти на каждой новой USB-клавиатуре).

Я искал JavaDocs для константы в классе KeyEvent , но я не могу ее найти. Кто-нибудь знает, как имитировать нажатие одной из этих кнопок, и если это возможно с Java?

Дополнительная библиотека тоже в порядке со мной, пока нет другого решения.

Кроме того, я знаю, что я должен использовать Robot для имитации нажатия клавиш, и это работает для всех обычных клавиш на моей клавиатуре. Я просто не могу найти способ имитировать нажатие клавиши на этих специальных клавишах.

Итак, я думаю, что это невозможно сделать с чистой 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. Но на данный момент, похоже, для этого нет решения.

Спасибо всем за ответы.

Вы уже пытались отправить коды ключей, зависящие от ОС, к Robot ? К сожалению, мультимедийные клавиши напрямую не поддерживаются в Java, даже в Java 1.7, но большинство определений ключевых слов в java.awt.event.KeyCode имеют то же значение, что и их родные шкентели Windows. Робот не фильтрует неизвестные коды ключей непосредственно на Java, но позволяет своему родному концу решить, что с ними делать. Таким образом, есть вероятность, что он может работать, по крайней мере, на определенных платформах.

Код ключа MUTE будет равен 0xAD . Ниже приведен список кодов ключей Windows .

 VK_MEDIA_PLAY_PAUSE VK_VOLUME_MUTE VK_VOLUME_DOWN VK_MEDIA_NEXT_TRACK VK_MEDIA_PREV_TRACK 

Управление приложениями Windows с использованием Java

Чтобы временно решить вашу проблему, просто удалите Google «rhythmbox android remote». Уже есть отличные проекты.

Intereting Posts
Какая анимация / просмотр используется для последних приложений / истории в Android 5.0 (Lollipop)? Воспроизведение звука независимо от уровня громкости устройства Android – установить фокус приложения Продвинутый провайдер местоположения – onLocationChanged перестает получать вызов Android подписали APK, показывая неполную Строка, выведенная ниже текста, не отображающая IntelliJ / структурный поиск: удаление бесполезных методов, которые вызывают только метод super Android. Отображать контакты в виде списка Добавить сенсорные события в класс VrPanoramaView для SDK для Google Картона для Android Что такое android: layout_alignLeft в Android? Проблемы с Android-темами, в которых реализовано самое простое: пользовательский цвет для каждой темы Android Studio создает шаблон проекта для новых проектов На тестирование блока Android, когда использовать тестовые примеры? Как сделать традиционный монгольский скрипт TextView в Android CertPathValidatorException: Trust anchor для пути сертификации не найден