我正在尝试使用Spotify Android SDK播放持续时间小于 10 40(极难辨别)秒的歌曲。我正在使用按钮开始播放。这样做的时候大部分时间都没有声音。垃圾按钮会导致偶尔播放声音(几乎不会发生)。 PlayerEvent
的{{1}}&如果没有声音,kSpPlaybackNotifyTrackChanged
会丢失。
我正在使用Spotify's Android SDK(Docs)。我正在尝试使用kSpPlaybackEventAudioFlush
播放歌曲。即使到达playUri(...)
的{{1}},某些歌曲在致电playUri(...)
后也不会播放任何声音。在另一个更复杂的测试环境中,我发现当出现此行为时,Player.OperationCallback
甚至没有被调用。非工作轨道的一个共同点是它们很短(持续时间小于 10 40(非常难以辨别)秒)。
我正在使用Android SDK版本onSuccess
并在运行Android操作系统版本Player.AudioDeliveredCallback
的设备上进行调试spotify-player-24-noconnect-2.20b
。
我还在Spotify Android SDK中列出了这个问题,可以找到here。
我使用this作为起点。我删除了所有与身份验证相关的代码,因为我只是使用Web API自行抓取OAuth令牌。我也忽略了Android软件包名称&应该在Spotify应用程序中提供的SHA1指纹对似乎甚至没有被服务检查。播放器正在初始化,我可以告诉它,因为有些歌曲没有任何问题。因此,4.4.2
的{{1}}会在短时间内被调用。调试日志消息确认登录过程成功。登录成功后7.0
已准备好通过使用Spotify URI调用它来使用。 ConnectionStateCallback
onLoggedIn()
方法的以下实现用于五个不同的playUri(...)
,它们使用View.OnClickListener
一个工作(按钮5)和一些非工作(按钮) 1-4)Spotify URI。
onClick(...)
按钮1,2,3和4应该开始播放短歌。 按钮5应该开始播放长歌。
以下日志主要显示Button
的{{1}}来电。
按下按钮5:
playUri(...)
按下按钮1,2,3或4:
public void onButtonClickedPlaySong1(View view) {
Log.d("MainActivity", "Playing short song");
mPlayer.playUri(null, "spotify:track:5vN4teJoROMQoadL4IzejG", 0, 0);
}
public void onButtonClickedPlaySong2(View view) {
Log.d("MainActivity", "Playing short song");
mPlayer.playUri(null, "spotify:track:46O6QtxuzX3iZn9hMXoeqo", 0, 0);
}
public void onButtonClickedPlaySong3(View view) {
Log.d("MainActivity", "Playing short song");
mPlayer.playUri(null, "spotify:track:770fJdqw14GUyCe2SMEgvP", 0, 0);
}
public void onButtonClickedPlaySong4(View view) {
Log.d("MainActivity", "Playing short song");
mPlayer.playUri(null, "spotify:track:4JjsoAKOZZCZuC0kiYwkTL", 0, 0);
}
public void onButtonClickedPlaySong5(View view) {
Log.d("MainActivity", "Playing long song");
mPlayer.playUri(null, "spotify:track:3CCCpjbs3uW018OkSguRFk", 0, 0);
}
按下之前按下按钮1,2,3或4:
Player.NotificationCallback
答案 0 :(得分:1)
我实际上找到了解决问题的方法。 playUri(...)
的最后一个参数是一个整数,在文档中称为“positionInMs”。将其设置为1
而非0
时,无论播放歌曲的持续时间如何,我都不会遇到任何问题。
从技术上讲,这首歌似乎被缩短了1毫秒,这让我认为这是一个非常糟糕的修复。但实际上它根本不明显,这就是为什么我很酷。