| BlueZ D-Bus Media API description |
| ********************************* |
| |
| |
| Media hierarchy |
| =============== |
| |
| Service org.bluez |
| Interface org.bluez.Media1 |
| Object path [variable prefix]/{hci0,hci1,...} |
| |
| Methods void RegisterEndpoint(object endpoint, dict properties) |
| |
| Register a local end point to sender, the sender can |
| register as many end points as it likes. |
| |
| Note: If the sender disconnects the end points are |
| automatically unregistered. |
| |
| possible properties: |
| |
| string UUID: |
| |
| UUID of the profile which the endpoint |
| is for. |
| |
| byte Codec: |
| |
| Assigned number of codec that the |
| endpoint implements. The values should |
| match the profile specification which |
| is indicated by the UUID. |
| |
| array{byte} Capabilities: |
| |
| Capabilities blob, it is used as it is |
| so the size and byte order must match. |
| |
| Possible Errors: org.bluez.Error.InvalidArguments |
| org.bluez.Error.NotSupported - emitted |
| when interface for the end-point is |
| disabled. |
| |
| void UnregisterEndpoint(object endpoint) |
| |
| Unregister sender end point. |
| |
| void RegisterPlayer(object player, dict properties) |
| |
| Register a media player object to sender, the sender |
| can register as many objects as it likes. |
| |
| Object must implement at least |
| org.mpris.MediaPlayer2.Player as defined in MPRIS 2.2 |
| spec: |
| |
| http://specifications.freedesktop.org/mpris-spec/latest/ |
| |
| Note: If the sender disconnects its objects are |
| automatically unregistered. |
| |
| Possible Errors: org.bluez.Error.InvalidArguments |
| org.bluez.Error.NotSupported |
| |
| void UnregisterPlayer(object player) |
| |
| Unregister sender media player. |
| |
| |
| Media Control hierarchy |
| ======================= |
| |
| Service org.bluez |
| Interface org.bluez.MediaControl1 [Deprecated] |
| Object path [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX |
| |
| Methods void Play() |
| |
| Resume playback. |
| |
| void Pause() |
| |
| Pause playback. |
| |
| void Stop() |
| |
| Stop playback. |
| |
| void Next() |
| |
| Next item. |
| |
| void Previous() |
| |
| Previous item. |
| |
| void VolumeUp() |
| |
| Adjust remote volume one step up |
| |
| void VolumeDown() |
| |
| Adjust remote volume one step down |
| |
| void FastForward() |
| |
| Fast forward playback, this action is only stopped |
| when another method in this interface is called. |
| |
| void Rewind() |
| |
| Rewind playback, this action is only stopped |
| when another method in this interface is called. |
| |
| Properties |
| |
| boolean Connected [readonly] |
| |
| |
| MediaPlayer1 hierarchy |
| ====================== |
| |
| Service org.bluez (Controller role) |
| Interface org.bluez.MediaPlayer1 [Experimental] |
| Object path [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX |
| |
| Methods void Play() |
| |
| Resume playback. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void Pause() |
| |
| Pause playback. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void Stop() |
| |
| Stop playback. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void Next() |
| |
| Next item. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void Previous() |
| |
| Previous item. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void FastForward() |
| |
| Fast forward playback, this action is only stopped |
| when another method in this interface is called. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void Rewind() |
| |
| Rewind playback, this action is only stopped |
| when another method in this interface is called. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| Properties string Equalizer [readwrite] |
| |
| Possible values: "off" or "on" |
| |
| string Repeat [readwrite] |
| |
| Possible values: "off", "singletrack", "alltracks" or |
| "group" |
| |
| string Shuffle [readwrite] |
| |
| Possible values: "off", "alltracks" or "group" |
| |
| string Scan [readwrite] |
| |
| Possible values: "off", "alltracks" or "group" |
| |
| string Status [readonly] |
| |
| Possible status: "playing", "stopped", "paused", |
| "forward-seek", "reverse-seek" |
| or "error" |
| |
| uint32 Position [readonly] |
| |
| Playback position in milliseconds. Changing the |
| position may generate additional events that will be |
| sent to the remote device. When position is 0 it means |
| the track is starting and when it's greater than or |
| equal to track's duration the track has ended. Note |
| that even if duration is not available in metadata it's |
| possible to signal its end by setting position to the |
| maximum uint32 value. |
| |
| dict Track [readonly] |
| |
| Track metadata. |
| |
| Possible values: |
| |
| string Title: |
| |
| Track title name |
| |
| string Artist: |
| |
| Track artist name |
| |
| string Album: |
| |
| Track album name |
| |
| string Genre: |
| |
| Track genre name |
| |
| uint32 NumberOfTracks: |
| |
| Number of tracks in total |
| |
| uint32 TrackNumber: |
| |
| Track number |
| |
| uint32 Duration: |
| |
| Track duration in milliseconds |
| |
| object Device [readonly] |
| |
| Device object path. |
| |
| string Name [readonly] |
| |
| Player name |
| |
| string Type [readonly] |
| |
| Player type |
| |
| Possible values: |
| |
| "Audio" |
| "Video" |
| "Audio Broadcasting" |
| "Video Broadcasting" |
| |
| string Subtype [readonly] |
| |
| Player subtype |
| |
| Possible values: |
| |
| "Audio Book" |
| "Podcast" |
| |
| boolean Browsable [readonly] |
| |
| If present indicates the player can be browsed using |
| MediaFolder interface. |
| |
| Possible values: |
| |
| True: Supported and active |
| False: Supported but inactive |
| |
| Note: If supported but inactive clients can enable it |
| by using MediaFolder interface but it might interfere |
| in the playback of other players. |
| |
| |
| boolean Searchable [readonly] |
| |
| If present indicates the player can be searched using |
| MediaFolder interface. |
| |
| Possible values: |
| |
| True: Supported and active |
| False: Supported but inactive |
| |
| Note: If supported but inactive clients can enable it |
| by using MediaFolder interface but it might interfere |
| in the playback of other players. |
| |
| object Playlist |
| |
| Playlist object path. |
| |
| MediaFolder1 hierarchy |
| ====================== |
| |
| Service unique name (Target role) |
| org.bluez (Controller role) |
| Interface org.bluez.MediaFolder1 [Experimental] |
| Object path freely definable (Target role) |
| [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX |
| (Controller role) |
| |
| Methods object Search(string value, dict filter) |
| |
| Return a folder object containing the search result. |
| |
| To list the items found use the folder object returned |
| and pass to ChangeFolder. |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| array{objects, properties} ListItems(dict filter) |
| |
| Return a list of items found |
| |
| Possible Errors: org.bluez.Error.InvalidArguments |
| org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void ChangeFolder(object folder) |
| |
| Change current folder. |
| |
| Note: By changing folder the items of previous folder |
| might be destroyed and have to be listed again, the |
| exception is NowPlaying folder which should be always |
| present while the player is active. |
| |
| Possible Errors: org.bluez.Error.InvalidArguments |
| org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| Properties uint32 NumberOfItems [readonly] |
| |
| Number of items in the folder |
| |
| string Name [readonly] |
| |
| Folder name: |
| |
| Possible values: |
| "/Filesystem/...": Filesystem scope |
| "/NowPlaying/...": NowPlaying scope |
| |
| Note: /NowPlaying folder might not be listed if player |
| is stopped, folders created by Search are virtual so |
| once another Search is perform or the folder is |
| changed using ChangeFolder it will no longer be listed. |
| |
| Filters uint32 Start: |
| |
| Offset of the first item. |
| |
| Default value: 0 |
| |
| uint32 End: |
| |
| Offset of the last item. |
| |
| Default value: NumbeOfItems |
| |
| array{string} Attributes |
| |
| Item properties that should be included in the list. |
| |
| Possible Values: |
| |
| "title", "artist", "album", "genre", |
| "number-of-tracks", "number", "duration" |
| |
| Default Value: All |
| |
| MediaItem1 hierarchy |
| ==================== |
| |
| Service unique name (Target role) |
| org.bluez (Controller role) |
| Interface org.bluez.MediaItem1 [Experimental] |
| Object path freely definable (Target role) |
| [variable |
| prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/playerX/itemX |
| (Controller role) |
| |
| Methods void Play() |
| |
| Play item |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| void AddtoNowPlaying() |
| |
| Add item to now playing list |
| |
| Possible Errors: org.bluez.Error.NotSupported |
| org.bluez.Error.Failed |
| |
| Properties object Player [readonly] |
| |
| Player object path the item belongs to |
| |
| string Name [readonly] |
| |
| Item displayable name |
| |
| string Type [readonly] |
| |
| Item type |
| |
| Possible values: "video", "audio", "folder" |
| |
| string FolderType [readonly, optional] |
| |
| Folder type. |
| |
| Possible values: "mixed", "titles", "albums", "artists" |
| |
| Available if property Type is "Folder" |
| |
| boolean Playable [readonly, optional] |
| |
| Indicates if the item can be played |
| |
| Available if property Type is "folder" |
| |
| dict Metadata [readonly] |
| |
| Item metadata. |
| |
| Possible values: |
| |
| string Title |
| |
| Item title name |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| string Artist |
| |
| Item artist name |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| string Album |
| |
| Item album name |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| string Genre |
| |
| Item genre name |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| uint32 NumberOfTracks |
| |
| Item album number of tracks in total |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| uint32 Number |
| |
| Item album number |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| uint32 Duration |
| |
| Item duration in milliseconds |
| |
| Available if property Type is "audio" |
| or "video" |
| |
| MediaEndpoint1 hierarchy |
| ======================== |
| |
| Service unique name |
| Interface org.bluez.MediaEndpoint1 |
| Object path freely definable |
| |
| Methods void SetConfiguration(object transport, dict properties) |
| |
| Set configuration for the transport. |
| |
| array{byte} SelectConfiguration(array{byte} capabilities) |
| |
| Select preferable configuration from the supported |
| capabilities. |
| |
| Returns a configuration which can be used to setup |
| a transport. |
| |
| Note: There is no need to cache the selected |
| configuration since on success the configuration is |
| send back as parameter of SetConfiguration. |
| |
| void ClearConfiguration(object transport) |
| |
| Clear transport configuration. |
| |
| void Release() |
| |
| This method gets called when the service daemon |
| unregisters the endpoint. An endpoint can use it to do |
| cleanup tasks. There is no need to unregister the |
| endpoint, because when this method gets called it has |
| already been unregistered. |
| |
| |
| MediaTransport1 hierarchy |
| ========================= |
| |
| Service org.bluez |
| Interface org.bluez.MediaTransport1 |
| Object path [variable prefix]/{hci0,hci1,...}/dev_XX_XX_XX_XX_XX_XX/fdX |
| |
| Methods fd, uint16, uint16 Acquire() |
| |
| Acquire transport file descriptor and the MTU for read |
| and write respectively. |
| |
| Possible Errors: org.bluez.Error.NotAuthorized |
| org.bluez.Error.Failed |
| |
| fd, uint16, uint16 TryAcquire() |
| |
| Acquire transport file descriptor only if the transport |
| is in "pending" state at the time the message is |
| received by BlueZ. Otherwise no request will be sent |
| to the remote device and the function will just fail |
| with org.bluez.Error.NotAvailable. |
| |
| Possible Errors: org.bluez.Error.NotAuthorized |
| org.bluez.Error.Failed |
| org.bluez.Error.NotAvailable |
| |
| void Release() |
| |
| Releases file descriptor. |
| |
| Properties object Device [readonly] |
| |
| Device object which the transport is connected to. |
| |
| string UUID [readonly] |
| |
| UUID of the profile which the transport is for. |
| |
| byte Codec [readonly] |
| |
| Assigned number of codec that the transport support. |
| The values should match the profile specification which |
| is indicated by the UUID. |
| |
| array{byte} Configuration [readonly] |
| |
| Configuration blob, it is used as it is so the size and |
| byte order must match. |
| |
| string State [readonly] |
| |
| Indicates the state of the transport. Possible |
| values are: |
| "idle": not streaming |
| "pending": streaming but not acquired |
| "active": streaming and acquired |
| |
| uint16 Delay [readwrite] |
| |
| Optional. Transport delay in 1/10 of millisecond, this |
| property is only writeable when the transport was |
| acquired by the sender. |
| |
| boolean NREC [readwrite] |
| |
| Optional and HFP specific (external to BlueZ). |
| Indicates if echo cancelling and noise reduction |
| functions are active in the transport, this |
| property is only writeable when the transport |
| was acquired by the sender. |
| |
| boolean InbandRingtone [readwrite] |
| |
| Optional and HFP specific (external to BlueZ). |
| Indicates if the transport support sending |
| ringtones, this property is only writeable when |
| the transport was acquired by the sender. |
| |
| string Routing [readonly] |
| |
| Optional and HFP specific (external to BlueZ). |
| Indicates where is the transport being routed. |
| |
| Possible Values: "HCI" or "PCM" |
| |
| uint16 Volume [readwrite] |
| |
| Optional. Indicates volume level of the transport, |
| this property is only writeable when the transport was |
| acquired by the sender. |
| |
| Note: the property will not be present for HSP/HFP |
| transports and MicrophoneGain/SpeakerGain should be |
| used instead. |
| |
| Possible Values: 0-127 |
| |
| byte MicrophoneGain [readwrite] |
| |
| Optional. Indicates volume level of the transport's |
| incoming audio stream for HSP/HFP transports. This |
| property is only writeable when the transport was |
| acquired by the sender. |
| |
| Possible Values: 0-15 |
| |
| byte SpeakerGain [readwrite] |
| |
| Optional. Indicates volume level of the transport's |
| outgoing audio stream for HSP/HFP transports. This |
| property is only writeable when the transport was |
| acquired by the sender. |
| |
| Possible Values: 0-15 |