Stay organized with collections
Save and categorize content based on your preferences.
Since a video app runs its media session and media controller in the same activity, the media session callbacks
are different from the implementation shown for the
audio app
server/client architecture. There are no service calls, and notifications are handled via the NotificationManager. The following table shows how the various features are controlled in each callback method:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-01-05 UTC."],[],[],null,["# Media session callbacks\n\nSince a video app runs its media session and media controller in the same activity, the media session callbacks\nare different from the implementation shown for the\n[audio app](/guide/topics/media-apps/audio-app/building-an-audio-app)\nserver/client architecture. There are no service calls, and notifications are handled via the NotificationManager. The following table shows how the various features are controlled in each callback method:\n\n\u003cbr /\u003e\n\n|--------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|------------------------------------------------|\n| | **onPlay()** | **onPause()** | **onStop()** |\n| [Audio Focus](/guide/topics/media-apps/volume-and-earphones#audio-focus) | `requestFocus()` passing in your `OnAudioFocusChangeListener`. *Always call `requestFocus()` first, proceed only if focus is granted.* | | `abandonAudioFocus()` |\n| [Media Session](/guide/topics/media-apps/working-with-a-media-session) | `setActive(true)` - Update metadata and state | - Update metadata and state | `setActive(false)` - Update metadata and state |\n| Player Implementation | Start the player | Pause the player | Stop the player |\n| [Becoming Noisy](/guide/topics/media-apps/volume-and-earphones#becoming-noisy) | Register your `BroadcastReceiver` | Unregister your `BroadcastReceiver` | |\n| Notifications | Show notification | Update notification | |\n\n\u003cbr /\u003e\n\n| **Note:** People using the Google Assistant can control your app with voice commands if you create your MediaSession with the necessary callbacks. The requirements are explained in the [Google Assistant documentation](/guide/topics/media-apps/interacting-with-assistant)."]]