gpt4 book ai didi

android - Spotify 的 Android SDK 无法可靠地播放持续时间短的歌曲

转载 作者:行者123 更新时间:2023-11-29 00:03:03 24 4
gpt4 key购买 nike

长话短说

我正在尝试使用 Spotify Android SDK 播放持续时间小于 10 40(极难分辨)秒的歌曲。我正在使用一个按钮开始播放。这样做时,大部分时间都没有声音。向按钮发送垃圾邮件会导致偶尔播放声音(几乎不会发生)。如果没有声音,PlayerEventkSpPlaybackNotifyTrackChangedkSpPlaybackEventAudioFlush 将丢失。

描述

我正在使用 Spotify's Android SDK (Docs)。我正在尝试使用 playUri(...) 播放歌曲。某些歌曲在调用 playUri(...) 后根本不会呈现任何声音,即使达到了 Player.OperationCallbackonSuccess .在另一个更复杂的测试环境中,我发现 Player.AudioDeliveredCallback 在出现此行为时甚至没有被调用。非工作轨道的一个共同点是它们很短(持续时间少于 10 40(极难分辨)秒)。我正在使用 Android SDK 版本 spotify-player-24-noconnect-2.20b 并在运行 Android 操作系统版本 4.4.27.0 的设备上进行调试>.

我还在 Spotify Android SDK 中将此列为一个问题,可以在 here 中找到.

重现步骤

我正在使用 this作为起点。我删除了所有与身份验证相关的代码,因为我只是自己使用 Web API 获取 OAuth token 。我也忽略了应该在 Spotify 应用程序中提供的 Android 包名称和 SHA1 指纹对,因为它似乎甚至没有被服务检查。播放器正在正确初始化,我可以看出这一点,因为有些歌曲播放没有任何问题。因此 ConnectionStateCallbackonLoggedIn() 会在短时间后被调用。调试日志消息确认登录过程成功。成功登录后 playUri(...) 就可以通过使用 Spotify URI 调用它来使用了。 View.OnClickListeneronClick(...) 方法的以下实现用于五个不同的 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.NotificationCallbackonPlaybackEvent(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

最佳答案

我实际上找到了解决问题的方法。 playUri(...) 的最后一个参数是一个整数,在文档中称为“positionInMs”。当将它设置为 1 而不是 0 时,无论要播放的歌曲的持续时间如何,我都没有任何问题。

从技术上讲,这似乎是歌曲被削减了 1 毫秒,我认为这是一个非常肮脏的修复。但实际上它根本不引人注意,这就是我对它很满意的原因。

关于android - Spotify 的 Android SDK 无法可靠地播放持续时间短的歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48965094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com