GlobalSystemMediaTransportControls API で遊んだ。
長い。
(そしてまた長い)前置き
全然大してことやってないんだけど、1年半前にその存在を知って以来ずっと気になってたのが解決したので覚書。
実際はVersion 1809 (OS build 17763)で入ったんだけど、サンプルやらドキュメントが全然なくてずっと放置してた。 docs.microsoft.comWindows 10 SDK Preview Build 17682 available now! - Windows Developer BlogWindows Developer Bloghttps://t.co/X26Wuyh1Dz GlobalSystemMediaTransportControls って何じゃろ?
— あやまどり (@ayamadori) 2018年6月6日
が、どうやら半年ほど前にドキュメントが更新されてたらしい。 github.com github.com つまるところmanifestに以下のCapabilityを直書きすればOK。しかし GlobalSystemMediaTransportControls API はいつ使えるようになるんだ。。。
— あやまどり (@ayamadori) 2019年4月20日
<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:ハードウェアとの統合はできないので、完全に同じではない