Начинающий
- Статус
- Оффлайн
- Регистрация
- 15 Май 2026
- Сообщения
- 13
- Реакции
- 0
Весь форум заполнен media-player-info-0.1.0.jar но я вам покажу более хороший способо реализаций
Элемент HUD сами сделаете
Моя DLL -
Нормальный атлас иконок -
Что это за нативка
MediaInfoNative – это Windows DLL для Java, которая читает текущую медиасессию Windows и возвращает данные о треке в JSON.
Библиотека работает с GlobalSystemMediaTransportControlsSessionManager, поэтому понимает приложения, которые отображаются в штатной медиапанели Windows. Это Spotify, браузерные плееры (YouTube, SoundCloud и т.д.), системные плееры и любые другие совместимые источники.
Как подключить к проекту
1. Кладёте MediaInfoNative.dll в папку native вашего клиента или рядом с jar файлом.
2. Создаёте Java-класс для работы с DLL:
3. Вызываете в нужном месте:
4. При запуске клиента указываете путь к DLL:
Или просто кладёте DLL в папку, которая уже есть в `java.library.path` (например, папка с игрой или `%JAVA_HOME%\bin`).
Как использовать в HUD
Опрашиваете DLL каждые 500-1000 мс и обновляете интерфейс.
Примерный алгоритм:
Поля, которые приходят:
- title -название трека
- artist - исполнитель
- album - альбом
- coverBase64 - обложка в base64
- sourceApp - откуда играет (Spotify.exe, chrome.exe и т.д.)
- status - playing / paused / stopped
- isPlaying - true если играет
- positionSeconds - текущая позиция в секундах
- durationSeconds - длительность в секундах
Пример JSON ответа:
Если ничего не играет:
Как достать обложку
coverBase64 приходит в base64. Превращаете в картинку так:
Управление плеером
Команды которые поддерживаются:
Можно повесить на кнопки в HUD.
Важное замечание
Java-класс NativeMediaInfo должен лежать в default package (без пакетов), иначе JNI не найдёт метод. Если хотите использовать свой пакет – придётся пересобрать DLL с правильным именем метода.
Мой первый пост
Спасибо за внимание. Если вам понравился гайд то напишите, буду чаще делать такое.
Элемент HUD сами сделаете
Моя DLL -
Пожалуйста, авторизуйтесь для просмотра ссылки.
для пастеров или кто не шарит релиз сразу -
Пожалуйста, авторизуйтесь для просмотра ссылки.
качаем ласт версию (я буду её обновлять если что)Нормальный атлас иконок -
Пожалуйста, авторизуйтесь для просмотра ссылки.
(Ток не бейте лопатами я их фастом делал) (если чо эт MTSDF) (Картинка иконок = букв ниже)
Пожалуйста, авторизуйтесь для просмотра ссылки.
Что это за нативка
MediaInfoNative – это Windows DLL для Java, которая читает текущую медиасессию Windows и возвращает данные о треке в JSON.
Библиотека работает с GlobalSystemMediaTransportControlsSessionManager, поэтому понимает приложения, которые отображаются в штатной медиапанели Windows. Это Spotify, браузерные плееры (YouTube, SoundCloud и т.д.), системные плееры и любые другие совместимые источники.
Плюсы перед обычными jar-библиотеками:
- Работает напрямую с системой Windows, а не через костыли с перехватом окон
- Получает обложку трека
- Умеет управлять плеером (play/pause/next/previous)
- Нет лишних зависимостей
- Работает быстро и стабильно
1. Кладёте MediaInfoNative.dll в папку native вашего клиента или рядом с jar файлом.
2. Создаёте Java-класс для работы с DLL:
java
public final class NativeMediaInfo {
static {
System.loadLibrary("MediaInfoNative");
}
private NativeMediaInfo() {}
public static native String getCurrentMediaJson();
public static native boolean controlCurrentMedia(String action);
}
3. Вызываете в нужном месте:
java
String json = NativeMediaInfo.getCurrentMediaJson();
4. При запуске клиента указываете путь к DLL:
bat
java -Djava.library.path=C:\папка\с\dll -jar your-client.jar
Или просто кладёте DLL в папку, которая уже есть в `java.library.path` (например, папка с игрой или `%JAVA_HOME%\bin`).
Опрашиваете DLL каждые 500-1000 мс и обновляете интерфейс.
Примерный алгоритм:
java
String json = NativeMediaInfo.getCurrentMediaJson();
// парсите JSON любой библиотекой
// смотрите поле hasSession
// если true - показываете трек, если false - скрываете виджет
Поля, которые приходят:
- title -название трека
- artist - исполнитель
- album - альбом
- coverBase64 - обложка в base64
- sourceApp - откуда играет (Spotify.exe, chrome.exe и т.д.)
- status - playing / paused / stopped
- isPlaying - true если играет
- positionSeconds - текущая позиция в секундах
- durationSeconds - длительность в секундах
Пример JSON ответа:
```json
{"ok":true,"hasSession":true,"title":"Track name","artist":"Artist","album":"Album","coverBase64":"...","sourceApp":"Spotify.exe","status":"playing","isPlaying":true,"positionSeconds":42,"durationSeconds":180}
```
Если ничего не играет:
json
{"ok":true,"hasSession":false}
Как достать обложку
coverBase64 приходит в base64. Превращаете в картинку так:
java
byte[] coverBytes = java.util.Base64.getDecoder().decode(coverBase64);
BufferedImage cover = ImageIO.read(new ByteArrayInputStream(coverBytes));
Команды которые поддерживаются:
java
NativeMediaInfo.controlCurrentMedia("play");
NativeMediaInfo.controlCurrentMedia("pause");
NativeMediaInfo.controlCurrentMedia("toggle");
NativeMediaInfo.controlCurrentMedia("next");
NativeMediaInfo.controlCurrentMedia("previous");
Можно повесить на кнопки в HUD.
Java-класс NativeMediaInfo должен лежать в default package (без пакетов), иначе JNI не найдёт метод. Если хотите использовать свой пакет – придётся пересобрать DLL с правильным именем метода.
Спасибо за внимание. Если вам понравился гайд то напишите, буду чаще делать такое.