2015-09-28 34 views

回答

2

AlbumMap for Album Art的工作方式类似于正则表达式。当控制器需要200x200的图像时,它将搜索albumArtUri元素并将您配置的字符串替换为substitution的大小。

在你的情况根据你的例子有以下网址:那么

您呈现映射将确定每个分辨率的替换规则。在你的情况,是这样的:

<PresentationMap type="ArtWorkSizeMap"> 
    <Match> 
    <imageSizeMap> 
     <sizeEntry size="200" substitution="size=200"/> 
     <sizeEntry size="600" substitution="size=600"/> 
     <sizeEntry size="XXXX" substitution="size=XXXX"/> 
    </imageSizeMap> 
    </Match> 
</PresentationMap> 

而且默认SMAPI响应包含一个albumArtUri将包括一个默认大小,像这样:

<trackMetadata> 
    <albumId>12</albumId> 
    <duration>253</duration> 
    <artistId>artist0001</artistId> 
    <artist>Saratoga Indiana</artist> 
    <album>Forgiveness & Gratefulness</album> 
    <albumArtUri>http://.../load_albumart.php?album_id=12&size=200</albumArtUri> 
</trackMetadata> 

在这种情况下,如果控制器具有高分辨率显示器(例如Retina或xhdpi)时,控制器将使用演示文稿映射来加载最高分辨率的图像,这是通过将控制器需要的分辨率(由size attribbute在sizeEntry节点中标识)替换为分辨率trackMetadata(或mediaMetadata)已在albumArtUri节点中。

有一个简短的tutorial available on the Sonos developer website有更多的细节。另外,尽管我意识到您可能使用200和600作为示例分辨率,但请注意,Sonos要求提供在各种控制器平台上效果最佳的特定分辨率(sizeEntry元素,具有特定的size属性)组合。这些解决方案在教程中进行了介绍。

尽管您可能不会在Sonos的首选列表中提供所有分辨率,但控制器将在配置中采用下一个最大尺寸。例如。 Sonos要求提供180x180的图像。在此示例中,控制器将选择200像素配置作为高于180的下一个最高分辨率。对于300x300和600x600,控制器将使用size="600"sizeEntry