Langsung ke konten

Memulai

  1. Instal plugin

    Terminal window
    npm i @capgo/capacitor-media-session
  2. Sinkronkan platform

    Terminal window
    npx cap sync

ℹ️ Media Session API tersedia di Android (browser berbasis Chrome, WebView) dan banyak browser desktop. Pada platform yang tidak didukung, pemanggilan akan terselesaikan tanpa efek, jadi sesuaikan UI Anda dengan tepat.

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' });
// Jeda nanti jika diperlukan
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' });
});
// Hapus handler saat Anda membuang pemutar
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;
  • Perbarui metadata saat trek berubah agar notifikasi dan smart speaker tetap terbaru.
  • Batasi pembaruan posisi (misalnya setiap 250 ms) untuk menghindari spam pada lapisan asli.
  • Selalu hapus action handler saat membersihkan instance pemutar untuk mencegah kebocoran yang tidak disengaja.