1
我想熟悉libspotify,我必須說libspotify上的文檔嚴重缺乏。我已經從示例中入侵了一個小應用程序,但我無法實現它的工作。libspotify不連接
我在Visual Studio 2012中構建了一個C控制檯應用程序。該appkey是正確的。
sp_session_config config;
sp_error error;
sp_session *session;
char *blob = NULL;
memset(&config, 0, sizeof(config));
config.api_version = SPOTIFY_API_VERSION;
config.cache_location = "tmp";
config.settings_location = "tmp";
config.application_key = g_appkey;
config.application_key_size = g_appkey_size;
config.user_agent = "SpotiTest";
error = sp_session_create(&config, &session);
if (SP_ERROR_OK != error) {
fprintf(stderr, "failed to create session: %s\n",
sp_error_message(error));
return;
}
error = sp_session_login(session, "USERNAME", "PASSWORD", 1, blob);
if (SP_ERROR_OK != error) {
fprintf(stderr, "failed to log in to Spotify: %s\n",
sp_error_message(error));
sp_session_release(session);
exit(4);
}
sp_connectionstate cs = sp_session_connectionstate (session);
不管用戶名和密碼是什麼(錯誤或正確),sp_session_login總是返回SP_ERROR_OK。當我使用sp_session_connectionstate檢查連接狀態時,它始終返回SP_CONNECTION_STATE_LOGGED_OUT。
我沒有看到我在這裏做錯了,也似乎無法通過正規渠道找到任何相關答案。
所以可以肯定。我應該在空閒循環中始終調用sp_session_process_events,如: while(1) { sp_session_process_events(); } 或者我應該只在[code] notify_main_thread [/ code]回調被調用時調用它? – Demigod
它比這稍微複雜一些。看看libspotify附帶的例子,比如spshell。無論何時調用'sp_session_process_events',它都會返回一個毫秒的時間來等待再次調用。您應該等到這個時間過去或調用notify_main_thread函數,以先到者爲準。如果你只是反覆調用'sp_session_process_events',它會浪費大量的CPU時間,並可能阻止其他事情的發揮。 – Weeble