メインコンテンツへスキップ

はじめに

GitHub

AIアシストセットアップを使ってプラグインをインストールできます。以下のコマンドで、お使いのAIツールに Capgo スキルを追加してください:

ターミナルウィンドウ
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

次に、以下のプロンプトを使用します:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-media-session` plugin in my project.

手動セットアップを希望する場合は、以下のコマンドでプラグインをインストールし、下記のプラットフォーム別の手順に従ってください:

ターミナルウィンドウ
bun add @capgo/capacitor-media-session
bunx cap sync
import { MediaSession } from '@capgo/capacitor-media-session';

クイックスタート

「Quick start」セクション

プレイヤーの起動時にメタデータと再生状態を公開します。

import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setMetadata({
title: 'Episode 12',
artist: 'Capgo Podcast',
album: 'Ship faster',
artwork: [{ src: 'https://cdn.example.com/artwork.png', sizes: '512x512', type: 'image/png' }],
});
await MediaSession.setPlaybackState({ playbackState: 'playing' });
await MediaSession.setPositionState({
duration: 3600,
position: 120,
playbackRate: 1,
});
await MediaSession.setActionHandler({ action: 'play' }, () => {
audio.play();
});
await MediaSession.setActionHandler({ action: 'pause' }, () => {
audio.pause();
});
await MediaSession.setActionHandler({ action: 'seekto' }, (details) => {
if (details.seekTime != null) {
audio.currentTime = details.seekTime;
}
});

渡す null をハンドラーとして指定し、アクションを登録解除します。

例:バッファリング中のポーズ状態

「例:バッファリング中のポーズ状態」セクション
await MediaSession.setPlaybackState({ playbackState: 'paused' });
// resume with 'playing' when your buffer is ready

よくある落とし穴

「Common pitfalls」セクション
  • 再生位置を最新に保つ:呼び出す setPositionState 再生が進んだりシークしたりする際に、Androidでは挙動が不自然に感じられます。
  • アートワークのURL: デバイスからアクセス可能なHTTPSアセットを使用してください。画像サイズが大きいとロック画面の更新が遅くなります。
  • ハンドラーの生存期間: ハンドラーはトラックが変わるたびではなく、プレイヤーのセットアップ時に一度だけ登録してください。

現在再生中のメディアのメタデータを設定します。

import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setMetadata({ album: 'album' });

メディアセッションの再生状態を更新します。

import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setPlaybackState({ playbackState: 'none' });

メディアセッションのアクションに対するハンドラーを登録します。

import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setActionHandler({ action: 'play' }, (details) => {
console.log(details);
});

アクティブなメディアセッションの位置状態を更新します。

import { MediaSession } from '@capgo/capacitor-media-session';
await MediaSession.setPositionState({
duration: 1000,
playbackRate: 1,
position: 10,
});
export interface MetadataOptions {
album?: string;
artist?: string;
artwork?: MediaImage[];
title?: string;
}
export interface PlaybackStateOptions {
playbackState: MediaSessionPlaybackState;
}
export interface ActionHandlerOptions {
action: MediaSessionAction;
}
export type ActionHandler = (details: ActionDetails) => void;
export interface PositionStateOptions {
duration?: number;
playbackRate?: number;
position?: number;
}
export interface MediaImage {
src: string;
sizes?: string;
type?: string;
}
export type MediaSessionPlaybackState = 'none' | 'paused' | 'playing';
export type MediaSessionAction =
| 'play'
| 'pause'
| 'seekbackward'
| 'seekforward'
| 'previoustrack'
| 'nexttrack'
| 'seekto'
| 'stop';

このページはプラグインの src/definitions.tsから生成されています。上流で公開 API が変更されたら、sync を再実行してください。

以下を使用している場合: はじめに ダッシュボードと API の操作を計画するには、以下と連携してください @capgo/capacitor-media-session の使用方法 @capgo/capacitor-media-session でネイティブ機能を使用する場合、 API の概要 API Overview の実装の詳細については、 はじめに Introduction の実装の詳細については、 API キー API Keys の実装の詳細については、 デバイス Devices の実装の詳細については。