我想要达到的目标
我想显示与itemType=trackList
其他itemType
例如播放列表的菜单的曲目(带有 的菜单)相同的“全部播放”菜单项。那可能吗?
因此,例如,将每个菜单表示为嵌套列表,我想要:
- 集合 1
- 全部播放<----我没有得到这个!
- 播放列表 1
- 全部播放 <-- 我明白了
- 轨道 1
- 轨道 2
- ...
- 播放列表 2
- 全部播放 <-- 我明白了
- 轨道 1
- 轨道 1
- ...
如果这种行为是不可能的,那很好,但我只是想仔细检查一下。
文档说什么
根据Sonos API 文档,您可以通过设置使其他 itemTypes 可播放canPlay=true
。事实上,它特别提到了我的用例:
canPlay 标志用于指示集合可以排队等待完整播放。为了实现这一点,客户端将调用 getMetadata 并传入一个布尔参数“recursive”设置为 true。这将返回集合中所有 mediaItem 元素的扁平列表。例如,对于表示曲目播放列表的集合,“canPlay”可能是真的......
当我设置时canPlay=true
,我可以在前一个菜单中按住 Collection,并弹出一个菜单,让我以这种方式播放所有内容,但在随后的菜单中没有真正的“播放所有”图标。这是有意的,还是有任何方法可以显示“全部播放”图标?
SMAPI itemTypes 页面说:
一旦您浏览到容器,带有 canEnumerate = true 的 itemType trackList 的 mediaCollection 将启用“所有轨道”节点,如下所示
这是唯一itemType
的吗?
我的getMetadata
回应
如果它有用,这是我的getMetadata
回复:
getMetadata
调用显示包含集合的菜单:<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMetadataResponse xmlns="http://www.sonos.com/Services/1.1"> <getMetadataResult> <index>0</index> <count>10</count> <total>10</total> ... <mediaCollection> <id>collections:134</id> <itemType>collection</itemType> <displayType>standardView</displayType> <title>Collection 1</title> <summary>Collection 1 Summary</summary> <canPlay>true</canPlay> <albumArtURI>https://path/to/album_art.jpg</albumArtURI> </mediaCollection> ... </getMetadataResult> </getMetadataResponse> </soap:Body> </soap:Envelope>
getMetadata
列出集合的播放列表的调用:<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMetadataResponse xmlns="http://www.sonos.com/Services/1.1"> <getMetadataResult> <index>0</index> <count>1</count> <total>1</total> <mediaCollection> <id>collections:134:playlists:506</id> <itemType>trackList</itemType> <displayType>standardView</displayType> <title>Playlist 1</title> <summary>Playlist 1 summary</summary> <canPlay>true</canPlay> <albumArtURI>http://path/to/album_art.jpg</albumArtURI> </mediaCollection> </getMetadataResult> </getMetadataResponse> </soap:Body> </soap:Envelope>