-
Implemented and tested native BlueZ media support for Dart and Flutter through
the
bluez_media_nativepackage.
Status#
- Status: In progress
- Timeline: August 3, 2026 to August 9, 2026
Progress#
1. Implemented Native BlueZ Media Support#
- Added native Dart and Flutter bindings for the main BlueZ media APIs on Linux.
- Used Dart FFI and
sdbus-c++for the native integration. - Exposed remote player controls, controller commands, transport information, media browsing, and local player registration.
2. Tested the Flutter Desktop Example#
- Successfully discovered the connected Bluetooth media player in the Flutter Linux example.
- Displayed playback state, position, track metadata, media items, and cover art.
- Tested playback controls and media browsing on the Linux desktop environment.

- Confirmed that the player view updates when the active track changes.
- Verified updates to the title, artist, position, duration, metadata, and artwork.

3. Identified the AGL Media Session Gap#
-
On the desktop,
mpris-proxyprovides the media session that BlueZ exposes to the Flutter example. - The desktop session makes the remote player, metadata, and cover art available for testing.
- The AGL target still needs the equivalent media session to be created and registered by the native Flutter application.
- Cover art remains pending on AGL until the native session integration is complete, although it works in the desktop test.
Support and Test Status#
| Area | Package support | Test status | Notes |
|---|---|---|---|
MediaPlayer1 discovery and snapshots |
Supported | Tested successfully on AGL | |
| Playback controls | Supported | Tested successfully on AGL | |
| Repeat and shuffle | Supported | Tested successfully on AGL | |
MediaControl1 | Supported | Tested successfully on AGL | |
MediaTransport1 | Supported | Tested successfully on AGL | |
| Media browsing | Supported | Tested successfully on AGL | |
| Track metadata | Supported | Tested successfully on AGL | |
| Cover art | Supported | Pending on AGL | Requires native media-session integration. |
Next Week Plan#
- Create the GSoC midterm report.
-
Continue implementing the native MPRIS session in the Flutter application so
AGL can create and register its media session without relying on
mpris-proxy. - Validate metadata updates and complete cover-art testing on the AGL target.
Links#
-
Source code:
bluez_media_native