LeOS-Ice-browser/android-components/components/feature/media/README.md

2.3 KiB

Android Components > Feature > Media

Feature component for website media related features.

Usage

Add the push service for controlling the media session:

class MediaSessionService(
    override val store: BrowserStore,
    override val crashReporter: CrashReporting
) : AbstractMediaSessionService()

Expose the service in the AndroidManifest.xml:

<service android:name=".media.MediaSessionService"
    android:foregroundServiceType="mediaPlayback"
    android:exported="false" />

The AbstractMediaSessionService also requires extra permissions needed to post notification updates on media changes:

  • android.permission.POST_NOTIFICATIONS
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK

Setting up the dependency

Use Gradle to download the library from maven.mozilla.org (Setup repository):

implementation "org.mozilla.components:feature-media:{latest-version}"

Notification: Recording devices

RecordingDevicesMiddleware can be used to show an ongoing notification when a recording device (camera, microphone) is used by web content. Notifications will be shown in the "Media" notification channel.

This feature should only be initialized once globally:

BrowserStore(
  middleware = listOf(
    RecordingDevicesMiddleware(applicationContext, notificationsDelegate)
  )
)

Facts

This component emits the following Facts:

Action Item Description
PLAY state Media started playing.
PAUSE state Media playback was paused.
STOP state Media playback has ended.
PLAY notification Play action of notification was invoked
PAUSE notification Pause action of notification was invoked

License

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/