0

我想要达到的目标

我想显示与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回复:

  1. 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>
    
  2. 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>
    
4

1 回答 1

0

听起来您要显示的是一组曲目顶部的“所有歌曲”节点。正如您所提到的,将“canPlay”设置为 true 将导致显示“全部播放”节点,这应该适用于任何 mediaCollection,无论容器类型如何。同样,将“canEnumerate”设置为 true 会导致“All Tracks”节点显示在任何 mediaCollection 的容器顶部。不幸的是,无法在容器顶部显示 Play all 按钮。

于 2016-04-21T17:42:54.200 回答