Class MediaService
- All Implemented Interfaces:
android.content.ComponentCallbacks,android.content.ComponentCallbacks2,androidx.lifecycle.LifecycleOwner
The SDK's manifest already declares this class as a <service> with
android:exported="false" and android:foregroundServiceType="mediaPlayback", so
hosts inherit the entry through manifest merging. The SDK does not declare the permissions,
because it cannot impose foreground-service permissions on apps that never use background audio.
A host that uses background audio adds them to its own manifest:
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
POST_NOTIFICATIONS is also a runtime permission on Android 13 (API 33) and above:
until the user grants it, the playback notification is hidden (playback itself continues).
A host may keep its own <service> entry for this class. It merges cleanly as long as
its attributes match; a conflicting value (for example android:exported="true") is a
manifest-merger error, fixed by deleting the host entry or with tools:replace. A
subclass is a different component and inherits nothing: declare it yourself, with
android:foregroundServiceType="mediaPlayback".
Drive the service through MediaServiceController. It is backed by a Media3
MediaSessionService: Media3 owns the notification, the notification channel, foreground
promotion and media-button routing. The integration contract is unchanged.
The notification's buttons come from
ServiceMediaApi.getNotificationButtons(android.content.Context).
Subclasses that override onCreate, onStartCommand, onBind,
onUnbind, onTaskRemoved or onDestroy must call super: Media3
receives the notification's buttons and media keys through them.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class androidx.media3.session.MediaSessionService
androidx.media3.session.MediaSessionService.Listener, androidx.media3.session.MediaSessionService.ShowNotificationForIdlePlayerModeNested classes/interfaces inherited from class android.content.Context
android.content.Context.BindServiceFlags -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final android.os.IBinderprotected MediaSessionHelperDeprecated.No longer used.Fields inherited from class androidx.media3.session.MediaSessionService
CONNECTION_HINT_KEY_CONTROLLER_INFO_TYPE, CONNECTION_HINT_KEY_INTENT_EXTRAS, CONNECTION_HINT_KEY_SESSION_ID, DEFAULT_FOREGROUND_SERVICE_TIMEOUT_MS, SERVICE_INTERFACE, SHOW_NOTIFICATION_FOR_IDLE_PLAYER_AFTER_STOP_OR_ERROR, SHOW_NOTIFICATION_FOR_IDLE_PLAYER_ALWAYS, SHOW_NOTIFICATION_FOR_IDLE_PLAYER_NEVERFields inherited from class android.app.Service
START_CONTINUATION_MASK, START_FLAG_REDELIVERY, START_FLAG_RETRY, START_NOT_STICKY, START_REDELIVER_INTENT, START_STICKY, START_STICKY_COMPATIBILITY, STOP_FOREGROUND_DETACH, STOP_FOREGROUND_LEGACY, STOP_FOREGROUND_REMOVEFields inherited from class android.content.Context
ACCESSIBILITY_SERVICE, ACCOUNT_SERVICE, ACTIVITY_SERVICE, ADVANCED_PROTECTION_SERVICE, ALARM_SERVICE, APP_FUNCTION_SERVICE, APP_OPS_SERVICE, APP_SEARCH_SERVICE, APPWIDGET_SERVICE, AUDIO_SERVICE, BATTERY_SERVICE, BIND_ABOVE_CLIENT, BIND_ADJUST_WITH_ACTIVITY, BIND_ALLOW_ACTIVITY_STARTS, BIND_ALLOW_OOM_MANAGEMENT, BIND_AUTO_CREATE, BIND_DEBUG_UNBIND, BIND_EXTERNAL_SERVICE, BIND_EXTERNAL_SERVICE_LONG, BIND_IMPORTANT, BIND_INCLUDE_CAPABILITIES, BIND_NOT_FOREGROUND, BIND_NOT_PERCEPTIBLE, BIND_PACKAGE_ISOLATED_PROCESS, BIND_SHARED_ISOLATED_PROCESS, BIND_WAIVE_PRIORITY, BIOMETRIC_SERVICE, BLOB_STORE_SERVICE, BLUETOOTH_SERVICE, BUGREPORT_SERVICE, CAMERA_SERVICE, CAPTIONING_SERVICE, CARRIER_CONFIG_SERVICE, CLIPBOARD_SERVICE, COMPANION_DEVICE_SERVICE, CONNECTIVITY_DIAGNOSTICS_SERVICE, CONNECTIVITY_SERVICE, CONSUMER_IR_SERVICE, CONTACT_KEYS_SERVICE, CONTEXT_IGNORE_SECURITY, CONTEXT_INCLUDE_CODE, CONTEXT_RESTRICTED, CREDENTIAL_SERVICE, CROSS_PROFILE_APPS_SERVICE, DEVICE_ID_DEFAULT, DEVICE_ID_INVALID, DEVICE_LOCK_SERVICE, DEVICE_POLICY_SERVICE, DISPLAY_HASH_SERVICE, DISPLAY_SERVICE, DOMAIN_VERIFICATION_SERVICE, DOWNLOAD_SERVICE, DROPBOX_SERVICE, EUICC_SERVICE, FILE_INTEGRITY_SERVICE, FINGERPRINT_SERVICE, GAME_SERVICE, GRAMMATICAL_INFLECTION_SERVICE, HARDWARE_PROPERTIES_SERVICE, HEALTHCONNECT_SERVICE, INPUT_METHOD_SERVICE, INPUT_SERVICE, IPSEC_SERVICE, JOB_SCHEDULER_SERVICE, KEYGUARD_SERVICE, KEYSTORE_SERVICE, LAUNCHER_APPS_SERVICE, LAYOUT_INFLATER_SERVICE, LOCALE_SERVICE, LOCATION_SERVICE, MEDIA_COMMUNICATION_SERVICE, MEDIA_METRICS_SERVICE, MEDIA_PROJECTION_SERVICE, MEDIA_QUALITY_SERVICE, MEDIA_ROUTER_SERVICE, MEDIA_SESSION_SERVICE, MIDI_SERVICE, MODE_APPEND, MODE_ENABLE_WRITE_AHEAD_LOGGING, MODE_MULTI_PROCESS, MODE_NO_LOCALIZED_COLLATORS, MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, NETWORK_STATS_SERVICE, NFC_SERVICE, NOTIFICATION_SERVICE, NSD_SERVICE, OVERLAY_SERVICE, PEOPLE_SERVICE, PERFORMANCE_HINT_SERVICE, PERSISTENT_DATA_BLOCK_SERVICE, POWER_SERVICE, PRINT_SERVICE, PROFILING_SERVICE, RECEIVER_EXPORTED, RECEIVER_NOT_EXPORTED, RECEIVER_VISIBLE_TO_INSTANT_APPS, RESTRICTIONS_SERVICE, ROLE_SERVICE, SATELLITE_SERVICE, SEARCH_SERVICE, SECURITY_STATE_SERVICE, SENSOR_SERVICE, SHORTCUT_SERVICE, STATUS_BAR_SERVICE, STORAGE_SERVICE, STORAGE_STATS_SERVICE, SYSTEM_HEALTH_SERVICE, TELECOM_SERVICE, TELEPHONY_IMS_SERVICE, TELEPHONY_SERVICE, TELEPHONY_SUBSCRIPTION_SERVICE, TETHERING_SERVICE, TEXT_CLASSIFICATION_SERVICE, TEXT_SERVICES_MANAGER_SERVICE, TV_AD_SERVICE, TV_INPUT_SERVICE, TV_INTERACTIVE_APP_SERVICE, UI_MODE_SERVICE, USAGE_STATS_SERVICE, USB_SERVICE, USER_SERVICE, VIBRATOR_MANAGER_SERVICE, VIBRATOR_SERVICE, VIRTUAL_DEVICE_SERVICE, VPN_MANAGEMENT_SERVICE, WALLPAPER_SERVICE, WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_RTT_RANGING_SERVICE, WIFI_SERVICE, WINDOW_SERVICEFields inherited from interface android.content.ComponentCallbacks2
TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_UI_HIDDEN -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddoStartForeground(MediaSessionHelper mediaSessionHelper, NotificationHelper notificationHelper, ServiceMediaApi serviceMediaApi) Deprecated.No longer called by the SDK;MediaServiceControllerstarts the session when it connects.booleanWhether the service is currently in the foreground (playback is ongoing).android.os.IBinderonBind(android.content.Intent intent) voidonCreate()voidandroidx.media3.session.MediaSessiononGetSession(androidx.media3.session.MediaSession.ControllerInfo controllerInfo) booleanonUnbind(android.content.Intent intent) voidupdateForegroundNotification(MediaSessionHelper mediaSessionHelper, NotificationHelper notificationHelper, ServiceMediaApi serviceMediaApi) Deprecated.No longer called by the SDK; useMediaServiceController.updateServiceMediaApi(ServiceMediaApi).Methods inherited from class androidx.media3.session.MediaSessionService
addSession, clearListener, getSessions, isPlaybackOngoing, isSessionAdded, onStartCommand, onTaskRemoved, onUpdateNotification, onUpdateNotification, pauseAllPlayersAndStopSelf, removeSession, setForegroundServiceTimeoutMs, setListener, setMediaNotificationProvider, setShowNotificationForIdlePlayer, triggerNotificationUpdateMethods inherited from class androidx.lifecycle.LifecycleService
getLifecycle, onStartMethods inherited from class android.app.Service
attachBaseContext, dump, getApplication, getForegroundServiceType, onConfigurationChanged, onLowMemory, onRebind, onTimeout, onTimeout, onTrimMemory, startForeground, startForeground, stopForeground, stopForeground, stopSelf, stopSelf, stopSelfResultMethods inherited from class android.content.ContextWrapper
bindIsolatedService, bindService, bindService, bindService, bindService, bindServiceAsUser, bindServiceAsUser, checkCallingOrSelfPermission, checkCallingOrSelfUriPermission, checkCallingOrSelfUriPermissions, checkCallingPermission, checkCallingUriPermission, checkCallingUriPermissions, checkContentUriPermissionFull, checkPermission, checkSelfPermission, checkUriPermission, checkUriPermission, checkUriPermissions, clearWallpaper, createAttributionContext, createConfigurationContext, createContext, createContextForSplit, createDeviceContext, createDeviceProtectedStorageContext, createDisplayContext, createPackageContext, createWindowContext, createWindowContext, databaseList, deleteDatabase, deleteFile, deleteSharedPreferences, enforceCallingOrSelfPermission, enforceCallingOrSelfUriPermission, enforceCallingPermission, enforceCallingUriPermission, enforcePermission, enforceUriPermission, enforceUriPermission, fileList, getApplicationContext, getApplicationInfo, getAssets, getAttributionSource, getAttributionTag, getBaseContext, getCacheDir, getClassLoader, getCodeCacheDir, getContentResolver, getDatabasePath, getDataDir, getDeviceId, getDir, getDisplay, getExternalCacheDir, getExternalCacheDirs, getExternalFilesDir, getExternalFilesDirs, getExternalMediaDirs, getFilesDir, getFileStreamPath, getMainExecutor, getMainLooper, getNoBackupFilesDir, getObbDir, getObbDirs, getOpPackageName, getPackageCodePath, getPackageManager, getPackageName, getPackageResourcePath, getParams, getResources, getSharedPreferences, getSystemService, getSystemServiceName, getTheme, getWallpaper, getWallpaperDesiredMinimumHeight, getWallpaperDesiredMinimumWidth, grantUriPermission, isDeviceProtectedStorage, isRestricted, isUiContext, moveDatabaseFrom, moveSharedPreferencesFrom, openFileInput, openFileOutput, openOrCreateDatabase, openOrCreateDatabase, peekWallpaper, registerComponentCallbacks, registerDeviceIdChangeListener, registerReceiver, registerReceiver, registerReceiver, registerReceiver, removeStickyBroadcast, removeStickyBroadcastAsUser, revokeSelfPermissionsOnKill, revokeUriPermission, revokeUriPermission, sendBroadcast, sendBroadcast, sendBroadcast, sendBroadcastAsUser, sendBroadcastAsUser, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcast, sendOrderedBroadcastAsUser, sendStickyBroadcast, sendStickyBroadcast, sendStickyBroadcastAsUser, sendStickyOrderedBroadcast, sendStickyOrderedBroadcastAsUser, setTheme, setWallpaper, setWallpaper, startActivities, startActivities, startActivity, startActivity, startForegroundService, startInstrumentation, startIntentSender, startIntentSender, startService, stopService, unbindService, unregisterComponentCallbacks, unregisterDeviceIdChangeListener, unregisterReceiver, updateServiceGroupMethods inherited from class android.content.Context
bindIsolatedService, getColor, getColorStateList, getDrawable, getString, getString, getSystemService, getText, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, obtainStyledAttributes, revokeSelfPermissionOnKill, sendBroadcastWithMultiplePermissions
-
Field Details
-
mBinder
protected final android.os.IBinder mBinder -
mMediaSessionHelper
Deprecated.No longer used. The media session is now a Media3 session owned by this service. Alwaysnull.
-
-
Constructor Details
-
MediaService
public MediaService()
-
-
Method Details
-
onCreate
public void onCreate()- Overrides:
onCreatein classandroidx.media3.session.MediaSessionService
-
doStartForeground
@Deprecated public void doStartForeground(MediaSessionHelper mediaSessionHelper, NotificationHelper notificationHelper, ServiceMediaApi serviceMediaApi) Deprecated.No longer called by the SDK;MediaServiceControllerstarts the session when it connects. Media3 decides when the service enters the foreground (while playing).mediaSessionHelperis destroyed, since it would open a second, legacy session. -
updateForegroundNotification
@Deprecated public void updateForegroundNotification(MediaSessionHelper mediaSessionHelper, NotificationHelper notificationHelper, ServiceMediaApi serviceMediaApi) Deprecated.No longer called by the SDK; useMediaServiceController.updateServiceMediaApi(ServiceMediaApi). Media3 updates the notification itself whenever the player state or metadata changes. -
isInForeground
public boolean isInForeground()Whether the service is currently in the foreground (playback is ongoing). -
onGetSession
@Nullable public androidx.media3.session.MediaSession onGetSession(@NonNull androidx.media3.session.MediaSession.ControllerInfo controllerInfo) - Specified by:
onGetSessionin classandroidx.media3.session.MediaSessionService
-
onBind
@Nullable public android.os.IBinder onBind(@Nullable android.content.Intent intent) - Overrides:
onBindin classandroidx.media3.session.MediaSessionService
-
onUnbind
public boolean onUnbind(android.content.Intent intent) - Overrides:
onUnbindin classandroid.app.Service
-
onDestroy
public void onDestroy()- Overrides:
onDestroyin classandroidx.media3.session.MediaSessionService
-