Android 上的 libspotify 从未调用“登录”回调

Posted

技术标签:

【中文标题】Android 上的 libspotify 从未调用“登录”回调【英文标题】:"Logged in" callback never called by libspotify on Android 【发布时间】:2012-08-06 11:42:16 【问题描述】:

我正在围绕 android 上的 libspotify 编写 NDK 包装器。但是 sp_session_callbacks::logged_in 回调从未调用过。

这是跟踪文件的内容:

libspotify trace from 12.1.51.g86c92b43 Release Android-arm 

< sp_session_create() = 0
> sp_session_login(0x240ea8 'moodstream1@gmail.com' '<hidden>' 0) on 0x400fc4c8

这是通过 sp_session_callbacks::log_message 回调收到的日志。

13:30:07.361 I [offline_authorizer.cpp:297] Unable to login offline: no such user
13:30:07.372 I [ap:1752] Connecting to AP ap.spotify.com:4070
13:30:07.382 I [network.cpp:438] Connecting to 193.182.8.10:4070
13:30:07.526 I [ap:1226] Connected to AP: 193.182.8.10:4070

如您所见,会话已正确创建。

我已经在真实设备和模拟器上进行了测试。结果是一样的。有什么想法吗?

【问题讨论】:

问题解决了。请参阅下面的前三个 cmets。 【参考方案1】:

问题可能是他们没有正确驱动 libspotify。这是人们常见的问题之一。

具体来说,监听 notify_main_thread 回调很重要。这表明 libspotify 需要处理来自 GUI 主线程的一些数据。

sp_session_process_events 然后应该从 GUI 主线程调用。 sp_session_process_events 也必须根据返回的 next_timeout 值定期调用

常见问题解答涵盖此https://developer.spotify.com/technologies/libspotify/faq/,sp_shell 示例用作说明。

【讨论】:

【参考方案2】:

您能提供一个显示此类错误的代码 sn-p 吗?通过快速测试(使用 spshell 示例),我得到了在 Android 上正确调用的 logged_in 回调。

【讨论】:

【参考方案3】:

正如 daek 所说,从跟踪文件的输出来看,您似乎没有使用 sp_session_process_events() 驱动 libspotify 事件处理并收听 notify_main_thread 回调。

正确实施后,您应该能够不时在跟踪文件日志中观察到“sp_session_process_events”行。

【讨论】:

以上是关于Android 上的 libspotify 从未调用“登录”回调的主要内容,如果未能解决你的问题,请参考以下文章

libspotify API:如何使用 libspotify API 检索封面艺术?

如何使用 libspotify 播放广播

使用 libspotifydotnet (Spotify - libspotify) 流式传输音频

libspotify 和本地 MP3 文件

京东大牛性能调优经验全解,从未公布的技巧

让 libspotify 中的示例在 Windows 7 下工作