SMTC JNI(Windows向けSMTCラッパー)

Library

概要

SMTC JNIは、Windows向けに設計されたJavaライブラリで、ネイティブDLL(smtc.dll)を内部に同梱してJavaアプリケーションからSMTC関連の情報を取得できるようにするラッパーです。JARにDLLを含める設定(resourcesフォルダ)がされており、JARを依存に追加するだけでDLLが自動的に読み込まれるため、追加のパス設定や手動でのDLL配置が不要です。取得できる情報には、現在再生中のメディアタイトル、現在の再生進捗、総再生時間、そしてカバー画像(Base64形式)などが含まれ、短いループでSmtcLoader.getSmtcInfo()を呼び出して利用する想定です。GitHub

リポジトリの統計情報

  • スター数: 5
  • フォーク数: 1
  • ウォッチャー数: 5
  • コミット数: 4
  • ファイル数: 6
  • メインの言語: Java

主な特徴

  • smtc.dll を JAR に同梱して自動的に読み込み、追加設定なしで利用可能
  • 現在再生中のタイトル、再生進捗、総時長、カバー画像(Base64)を取得
  • Windows 専用の軽量JNIラッパー(Java側のAPIはシンプル)
  • resourcesフォルダを利用したDLLパッケージングが設定済み

技術的なポイント

このプロジェクトは Java とネイティブコードをつなぐ JNI(Java Native Interface)を利用しており、Java側からネイティブ DLL(smtc.dll)を呼び出すことで、OS のメディアコントロール情報を取得します。README によれば resources ディレクトリがビルド時にリソースとして含まれるようになっており、JAR 内に DLL を同梱することで配布時の手間を削減しています。実装上よく使われる手法としては、JAR 内のリソースとして格納した DLL を一時ディレクトリに抽出し、System.load()/System.loadLibrary() で動的に読み込む方式が取られていると推測されます。ライブラリの公開 API は SmtcLoader.getSmtcInfo() のような単一の取得メソッドを提供し、戻り値はパイプ区切りの文字列(例: “title|progress|duration|coverBase64”)で返される想定です。カバー画像は Base64 でエンコードされているため、Java 側では Base64 をデコードして BufferedImage に変換したり、ファイルとして保存することが可能です。注意点としては Windows 専用であるためクロスプラットフォーム対応はなく、DLL のアーキテクチャ(x86/x64)やプロセスの権限などが動作に影響する可能性があります。また、リポジトリはファイル数・コミット数が少なく、テストやマルチアーキテクチャ向けのビルド、ドキュメントの詳細説明は限定的なので、本番利用前に動作確認や例外処理(DLLのロード失敗、Null データの扱いなど)を追加することを推奨します。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • .idea: dir
  • LICENSE: file
  • README.md: file
  • Smtc-java.iml: file

…他 1 ファイル

READMEの抜粋(要点)

  • Windows専用の Java JNI ライブラリ
  • smtc.dll を JAR に同梱、追加のパス設定不要
  • 主な機能:メディアタイトル取得、再生進捗、総時長、カバー画像(Base64)
  • 使用方法:ビルドした JAR をプロジェクトに追加し、SmtcLoader.getSmtcInfo() を呼び出す

使い方(簡易)

  1. リポジトリをビルドして JAR を作成
  2. Java プロジェクトの依存に JAR を追加
  3. SmtcLoader.getSmtcInfo() を定期的に呼び出して返却文字列をパース(pipe区切り)
  4. カバー画像は Base64 をデコードして表示や保存に利用

まとめ

Windows向けに手早くSMTC情報を取得できるシンプルなJNIラッパー(導入が容易だが検証が必要)

リポジトリ情報: