【发布时间】:2018-02-24 16:37:14
【问题描述】:
TL;DR
我正在尝试使用 Spotify Android SDK 播放持续时间小于 10 40 秒(极难分辨)的歌曲。我正在使用按钮开始播放。这样做时,大部分时间都没有声音。向按钮发送垃圾邮件会导致偶尔播放声音(几乎不会发生)。如果没有声音,PlayerEvent 的 kSpPlaybackNotifyTrackChanged 和 kSpPlaybackEventAudioFlush 会丢失。
说明
我正在使用Spotify's Android SDK (Docs)。我正在尝试使用playUri(...) 播放歌曲。某些歌曲在调用playUri(...) 后根本不会发出任何声音,即使达到了Player.OperationCallback 的onSuccess。在另一个更复杂的测试环境中,我发现Player.AudioDeliveredCallback 在出现这种行为时甚至没有被调用。非工作轨道的一个共同点是它们都很短(持续时间少于 10 40(极难分辨)秒)。
我正在使用 Android SDK 版本 spotify-player-24-noconnect-2.20b 并在运行 Android OS 版本 4.4.2 和 7.0 的设备上进行调试。
我还在 Spotify Android SDK 中将此列为一个问题,可以在 here 找到。
复制步骤
我使用this 作为起点。我删除了所有与身份验证相关的代码,因为我只是自己使用 Web API 获取 OAuth 令牌。我也忽略了应该在 Spotify 应用程序中提供的 Android 包名称和 SHA1 指纹对,因为它似乎甚至没有被服务检查。我可以告诉播放器正在正确初始化,因为有些歌曲可以毫无问题地播放。因此ConnectionStateCallback 的onLoggedIn() 在很短的时间后被调用。调试日志消息确认登录过程成功。成功登录后,playUri(...) 可以通过使用 Spotify URI 调用它来使用。 View.OnClickListener 的 onClick(...) 方法的以下实现用于五个不同的 Button 使用 playUri(...) 与工作(按钮 5)和一些非工作(按钮 1-4)Spotify URI。
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 应开始播放短歌。 按钮 5 应该开始播放一首长歌。
- 按下按钮 1、2、3 或 4 之一会导致没有声音播放。
- 多次按下按钮 1、2、3 或 4 之一很少会导致声音播放。
- 按下按钮 5 会一直播放声音。
预期行为
- 按下按钮 1、2、3、4 或 5 中的一个,将一直播放声音。
日志
以下日志主要显示Player.NotificationCallback的onPlaybackEvent(PlayerEvent playerEvent)调用。
按下按钮 5:
02-24 13:19:15.500 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playing long song
02-24 13:19:15.516 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyPlay
02-24 13:19:15.574 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:19:15.692 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:19:15.692 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:19:15.692 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyContextChanged
02-24 13:19:15.791 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyTrackChanged
02-24 13:19:15.791 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackEventAudioFlush
按下按钮 1、2、3 或 4:
02-24 13:20:04.286 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playing short song
02-24 13:20:04.307 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyPlay
02-24 13:20:04.357 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:20:04.463 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:20:04.463 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:20:04.463 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyContextChanged
在之前按下按钮后按下按钮 1、2、3 或 4:
02-24 13:20:06.020 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playing short song
02-24 13:20:06.035 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyPlay
02-24 13:20:06.088 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:20:06.179 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
02-24 13:20:06.179 5766-5766/<YOUR_PACKAGE> D/MainActivity: Playback event received: kSpPlaybackNotifyMetadataChanged
【问题讨论】: