Straw phase M-2: MediaSession + audio focus + service skeleton
Wraps the existing Activity-owned ExoPlayer in a Media3 MediaSession. Side effects: - Lock-screen media controls (play/pause) - System media notification with play/pause buttons - Audio focus + ducking (other audio dims when straw plays) - Bluetooth + headset hardware-button routing - Plays nicely alongside other media apps' notifications The ExoPlayer is also configured with AudioAttributes (USAGE_MEDIA + CONTENT_TYPE_MOVIE) and handleAudioFocus=true so other apps can request focus correctly (e.g., a phone call ducks/pauses straw). Also scaffolded but NOT yet wired: - PlaybackService extending MediaSessionService — the foundation for true background-after-Activity-kill audio. Manifest entry + deps added (media3-session 1.4.1, concurrent-futures-ktx 1.2.0). The Activity-to-Service migration via MediaController is M-3 work. - POST_NOTIFICATIONS, FOREGROUND_SERVICE, FOREGROUND_SERVICE_MEDIA_PLAYBACK, WAKE_LOCK permissions in manifest. For the user right now: lock the phone while a video plays — media controls appear on the lock screen. Open another app — notification with play/pause sits in the shade. Press a headset's play/pause — straw responds. Pull the home screen — PiP keeps the video floating + audio continues. Full screen-off-background-audio after killing the activity arrives in M-3.
This commit is contained in:
parent
1578de5dbb
commit
7894fe5a4d
4 changed files with 98 additions and 2 deletions
|
|
@ -3,6 +3,13 @@
|
|||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<!-- Background audio playback -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
||||
<!-- Android 13+ runtime notification permission for media controls -->
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<!-- Wake while audio plays -->
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
|
||||
<application
|
||||
android:name=".StrawApp"
|
||||
|
|
@ -39,5 +46,15 @@
|
|||
<data android:mimeType="text/plain" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- Phase M-2: MediaSessionService for background audio + notification + lock-screen controls. -->
|
||||
<service
|
||||
android:name=".feature.player.PlaybackService"
|
||||
android:exported="true"
|
||||
android:foregroundServiceType="mediaPlayback">
|
||||
<intent-filter>
|
||||
<action android:name="androidx.media3.session.MediaSessionService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue