几周前我开始使用 Spotify App API。
我想改变音量。这应该通过使用 Player 类的 volume 属性来完成,如文档中所述:
volume 获取或设置当前音量级别为 0.0 和 1.0 之间的浮点数。
不幸的是,这个音量属性只能用于获取当前音量,而不能用于设置音量。
于是我开始在网上搜索一些资料。我在堆栈溢出1和2上找到了两个相关的帖子。
那么,我会问与您可能会问的其他两个人相同的问题。
好吧,我对 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