コンテンツへスキップ

はじめに

  1. プラグインをインストール

    Terminal window
    npm i @capgo/capacitor-media-session
  2. プラットフォームを同期

    Terminal window
    npx cap sync

ℹ️ Media Session APIは、Android(Chromeベースのブラウザ、WebView)および多くのデスクトップブラウザで利用可能です。サポートされていないプラットフォームでは、呼び出しは効果なく解決されるため、それに応じてUIを保護してください。

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' },
],
});
await MediaSession.setPlaybackState({ playbackState: 'playing' });
// 必要に応じて後で一時停止
await MediaSession.setPlaybackState({ playbackState: 'paused' });
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ミリ秒ごと)。
  • プレーヤーインスタンスを破棄するときは、常にアクションハンドラを削除して、誤ったリークを防ぎます。