書くことないです。

ayamadoriが独り言を呟く日記。

GlobalSystemMediaTransportControls API で遊んだ。

長い。

(そしてまた長い)前置き

全然大してことやってないんだけど、1年半前にその存在を知って以来ずっと気になってたのが解決したので覚書。

実際はVersion 1809 (OS build 17763)で入ったんだけど、サンプルやらドキュメントが全然なくてずっと放置してた。 docs.microsoft.com が、どうやら半年ほど前にドキュメントが更新されてたらしい。 github.com github.com つまるところmanifestに以下のCapabilityを直書きすればOK。

<Capabilities>
      <uap7:Capability Name="globalMediaControl" />
</Capabilities>

というわけで以下サンプル。 github.com

何やってる?

API一覧を見ればおおよそ分かるけど、他アプリのプレイバックを操作してる。 docs.microsoft.com 作ったサンプルでは他アプリで再生中の曲名/アーティストや再生/停止の状態を取得してるけど、逆に他アプリの再生制御もできる模様。 もともとWindows 8.1/10には音量ボタンを押したときなどに出てくるSystem Media Transport Controlsというのがあるけど、それと似たことがサードパーティーアプリでもできる。*1

気になるところは?

  • UIスレッドへの反映は別スレッドを起こす必要がある。
  • アプリがバックグラウンドにいても状態変化を取得できるっぽい。PC上で最小化させてもOKだったし、バックグラウンドトリガーにそれらしい項目が無いというのもある。
  • What's Newでも全然推されてないし、長らくドキュメントが未整備だったのもあって、これを使ったアプリがストアの審査を通るのか不安。 docs.microsoft.com

*1:ハードウェアとの統合はできないので、完全に同じではない