在实施Sonos Music API时,如何获得菜单列表" collection"项目,显示"全部播放"按钮?

时间:2016-04-20 12:18:21

标签: sonos

我想要实现的目标

我想要显示相同的"全部播放"我在列出其他itemType=trackList的菜单时的曲目(itemType的菜单)时获得的菜单项,例如播放列表。这可能吗?

因此,例如,将每个菜单表示为嵌套列表,我想:

  • 收藏品1
    • 全部播放< ----我不能得到这个!
    • 播放列表1
      • 全部播放< - 我明白了
      • Track 1
      • Track 2
      • ...
    • 播放列表2
      • 全部播放< - 我明白了
      • Track 1
      • Track 1
    • ...

如果这种行为不可行,那很好,但我只想仔细检查。

文档说什么

根据Sonos API docs,您可以通过设置canPlay=true来播放其他itemTypes。事实上,它特别提到了我的用例:

  

canPlay标志用于指示集合可以排队等待整个播放。为了实现这一点,客户端将调用getMetadata传递一个布尔参数“recursive”设置为true。这将返回集合中所有mediaItem元素的展平列表。 例如,“canPlay”可能适用于代表曲目播放列表的集合 ...

当我设置canPlay=true时,我可以按住前一个菜单中的收藏夹,并有一个菜单弹出窗口,让我按照这种方式播放所有内容,但我不会&# 39;得到一个真实的"全部播放"后续菜单中的图标。这是有意的,还是有任何方式来显示"全部播放"图标?

SMAPI itemTypes page说:

  

具有canEnumerate = true的itemType trackList的mediaCollection将启用" All Tracks"一旦浏览到容器,就会显示节点,如下所示

这是唯一可用的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>
    

1 个答案:

答案 0 :(得分:0)

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