4

几周前我开始使用 Spotify App API。

我想改变音量。这应该通过使用 Player 类的 volume 属性来完成,如文档中所述:

volume 获取或设置当前音量级别为 0.0 和 1.0 之间的浮点数。

不幸的是,这个音量属性只能用于获取当前音量,而不能用于设置音量。

于是我开始在网上搜索一些资料。我在堆栈溢出12上找到了两个相关的帖子。

那么,我会问与您可能会问的其他两个人相同的问题。

好吧,我对 Spotify API 进行了更深入的研究,并找到了一些有用的信息。我希望这篇文章能对 Spotify 开发者有所帮助。

此外,stackoverflow 似乎是为 Spotify 发布错误报告的方式。

因此,让我们开始我的 Spotify App API 调查。所有这些都是通过使用 Inspector 完成的。

音量属性在 Player 类中定义。Player 类在模型模块中定义。所以让我们看看模型,为此我们打开文件 models.js(检查器中的“脚本”选项卡,在下拉菜单中选择“models.js”)。我们首先找到这个(第 743 行):

* @property {number}      volume               Get or set the current volume level as a float between 0.0 and 1.0.

那么让我们看看这个 volume 属性(models.js 中的第 889-892 行):

volume: {
    get: sp.trackPlayer.getVolume,
    set: sp.trackPlayer.setVolume
},

行。所以现在我们可以使用 trackPlayer 中的 setVolume 方法来设置音量。让我们更深入地看看 trackPlayer 里面有什么。为此,请在控制台中输入:

_getSpotifyModule("trackPlayer")

它返回一个包含许多函数的对象。这是一个小快照:

_getSpotifyModule("trackPlayer")
    Object
    ...
    getShuffle: function getShuffle() { [native code] }
    getVolume: function getVolume() { [native code] }
    playTrackFromContext: function playTrackFromContext() { [native code] }
    ...
    setShuffle: function setShuffle() { [native code] }
    skipToNextTrack: function skipToNextTrack() { [native code] }
    ...

是否可以看到函数 getVolume 已定义。但是函数 setVolume 不是。

所以这是我的结论:目前还不能使用 Player.volume 来设置音量,因为 setVolume 函数没有在 trackPlayer 中定义。

我希望我的工作能够帮助开发人员解决这个问题。


在 [1] 中,IKendac 建议:

仅当您的应用启动正在发生的播放时,您才可以更改音量

但事实证明这是错误的,我做了一个小应用程序来测试它:https ://gist.github.com/3152875 。

也可以尝试在控制台执行以下代码,会看到音量没有变化:

var sp = getSpotifyApi(1);
var models = sp.require('sp://import/scripts/api/models');
var views = sp.require('sp://import/scripts/api/views');
var player = models.player;

player.volume;
player.volume = 0.5;
player.volume;

[1]使用 spotify App API 更改音量 [2] https://stackoverflow.com/questions/11230630/change-volume-in-a-spotify-app

4

1 回答 1

1

这是预期的行为。文档有问题,将予以更正。

于 2012-07-24T13:42:42.257 回答