はじめに
-
プラグインをインストール
Terminal window npm i @capgo/capacitor-media-sessionTerminal window pnpm add @capgo/capacitor-media-sessionTerminal window yarn add @capgo/capacitor-media-sessionTerminal window bun add @capgo/capacitor-media-session -
プラットフォームを同期
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
ℹ️ Media Session APIは、Android(Chromeベースのブラウザ、WebView)および多くのデスクトップブラウザで利用可能です。サポートされていないプラットフォームでは、呼び出しは効果なく解決されるため、それに応じてUIを保護してください。
メタデータを公開
Section titled “メタデータを公開”import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setMetadata({ title: 'Weekly Tech Podcast', artist: 'Capgo Studio', album: 'Season 2', artwork: [ { src: 'https://cdn.example.com/covers/s02e05-512.png', sizes: '512x512', type: 'image/.png' }, ],});再生状態を更新
Section titled “再生状態を更新”await MediaSession.setPlaybackState({ playbackState: 'playing' });
// 必要に応じて後で一時停止await MediaSession.setPlaybackState({ playbackState: 'paused' });メディアアクションを処理
Section titled “メディアアクションを処理”const pauseHandler = async () => { player.pause(); await MediaSession.setPlaybackState({ playbackState: 'paused' });};
await MediaSession.setActionHandler({ action: 'pause' }, pauseHandler);await MediaSession.setActionHandler({ action: 'play' }, async () => { await player.play(); await MediaSession.setPlaybackState({ playbackState: 'playing' });});
// プレーヤーを破棄するときにハンドラを削除await MediaSession.setActionHandler({ action: 'pause' }, null);const updatePosition = async () => { await MediaSession.setPositionState({ duration: player.duration, position: player.currentTime, playbackRate: player.playbackRate, });};
player.ontimeupdate = updatePosition;player.onratechange = updatePosition;- トラックが変更されたときにメタデータを更新して、通知とスマートスピーカーを最新の状態に保ちます。
- ネイティブレイヤーへのスパムを避けるために、位置の更新を調整します(例:250ミリ秒ごと)。
- プレーヤーインスタンスを破棄するときは、常にアクションハンドラを削除して、誤ったリークを防ぎます。