Media Session API
The mediaSession namespace provides listeners for remote control events from system media controls, Bluetooth devices, and the lock screen.
Interface
Section titled “Interface”interface MediaSessionApi { setup(): Promise<void>; addListener<E extends MediaSessionEventName>( eventName: E, listener: MediaSessionListener<E> ): Promise<BindingListenerHandle>; removeAllListeners(): Promise<void>;}Methods
Section titled “Methods”setup()
Section titled “setup()”Initializes the native plugin. MUST be called before registering listeners.
await mediaSession.setup();Returns: Promise<void>
addListener(eventName, listener)
Section titled “addListener(eventName, listener)”Registers a listener for remote control events.
const handle = await mediaSession.addListener('remote-play', () => { console.log('User pressed play on remote control');});
// Remove listener when doneawait handle.remove();Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
eventName | MediaSessionEventName | Yes | Remote event to subscribe to. |
listener | MediaSessionListener<E> | Yes | Callback with typed payload. |
Returns: Promise<BindingListenerHandle>
Supported event names
Section titled “Supported event names”| Event | Payload | Description |
|---|---|---|
remote-play | {} | User triggered play from remote control. |
remote-pause | {} | User triggered pause from remote control. |
remote-next | {} | User triggered next track. |
remote-previous | {} | User triggered previous track. |
remote-seek | { position: number } | User triggered seek. Only emitted if runtime supports seek. |
removeAllListeners()
Section titled “removeAllListeners()”Removes all registered media session listeners.
await mediaSession.removeAllListeners();Returns: Promise<void>
Payload types
Section titled “Payload types”MediaSessionEventPayloadMap
Section titled “MediaSessionEventPayloadMap”interface MediaSessionEventPayloadMap { 'remote-play': {}; 'remote-pause': {}; 'remote-next': {}; 'remote-previous': {}; 'remote-seek': { position: number };}Listener type
Section titled “Listener type”type MediaSessionListener<E extends MediaSessionEventName> = ( payload: MediaSessionEventPayloadMap[E]) => void;