void on_logged_in(list<int> int_params, list<string> string_params, sp_session *session, sp_track *track) { sp_error error = (sp_error)int_params.front(); bool success = (SP_ERROR_OK == error) ? true : false; JNIEnv *env; jclass class_libspotify = find_class_from_native_thread(&env); jmethodID methodId = env->GetStaticMethodID(class_libspotify, "onLogin", "(ZLjava/lang/String;)V"); env->CallStaticVoidMethod(class_libspotify, methodId, success, env->NewStringUTF(sp_error_message(error))); env->DeleteLocalRef(class_libspotify); }
void on_player_position_changed(list<int> int_params, list<string> string_params, sp_session *session, sp_track *track) { s_player_position++; int total_length = sp_track_duration(track) / 1000; float percentage = (float)s_player_position / (float)total_length; JNIEnv *env; jclass classLibSpotify = find_class_from_native_thread(&env); jmethodID methodId = env->GetStaticMethodID(classLibSpotify,"onPlayerPositionChanged","(F)V"); env->CallStaticVoidMethod(classLibSpotify, methodId, percentage); env->DeleteLocalRef(classLibSpotify); }
void on_player_position_changed(list<int> int_params, list<string> string_params, sp_session *session, sp_track *track) { s_player_position+=1000; JNIEnv *env; jclass classLibSpotify = find_class_from_native_thread(&env); jmethodID methodId = env->GetStaticMethodID(classLibSpotify,"onPlayerPositionChanged","(I)V"); env->CallStaticVoidMethod(classLibSpotify, methodId, s_player_position); if (env->ExceptionCheck()) { env->ExceptionDescribe(); env->ExceptionClear(); } env->DeleteLocalRef(classLibSpotify); }
void on_credentials_blob_updated(list<int> int_params, list<string> string_params, sp_session *session, sp_track *track){ string username = string_params.front(); string blob = string_params.back(); JNIEnv *env; jclass class_libspotify = find_class_from_native_thread(&env); jmethodID methodId = env->GetStaticMethodID(class_libspotify, "onCredentialsBlobUpdated", "(Ljava/lang/String;Ljava/lang/String;)V"); env->CallStaticVoidMethod(class_libspotify, methodId, env->NewStringUTF(username.c_str()), env->NewStringUTF(blob.c_str())); if (env->ExceptionCheck()) { env->ExceptionDescribe(); env->ExceptionClear(); } env->DeleteLocalRef(class_libspotify); }
void on_logged_in(list<int> int_params, list<string> string_params, sp_session *session, sp_track *track) { sp_error error = (sp_error)int_params.front(); bool success = (SP_ERROR_OK == error) ? true : false; JNIEnv *env; jclass class_libspotify = find_class_from_native_thread(&env); jmethodID methodId = env->GetStaticMethodID(class_libspotify, "onLogin", "(ZLjava/lang/String;Ljava/lang/String;)V"); log("on_logged_in: success:%s, error %s, sp_error_message(error) %s, session %s, sp_session_user_name(session) %s", success?"true":"false", error==0?"null":"not null", sp_error_message(error)==0?"null":"not null", session==0?"null":"not null", sp_session_user_name(session)==0?"null":"not null"); env->CallStaticVoidMethod(class_libspotify, methodId, success, env->NewStringUTF(sp_error_message(error)), env->NewStringUTF(sp_session_user_name(session))); if (env->ExceptionCheck()) { env->ExceptionDescribe(); env->ExceptionClear(); } env->DeleteLocalRef(class_libspotify); }
static void SP_CALLCONV search_complete(sp_search *search, void *userdata) { JNIEnv *env; jclass classLibspotify = find_class_from_native_thread(&env); string &qid = *static_cast<string*>(userdata); jstring j_qid = env->NewStringUTF(qid.c_str()); bool success = (sp_search_error(search) == SP_ERROR_OK) ? true : false; int count = sp_search_num_tracks(search); jstring j_trackname; jstring j_trackuri; jstring j_albumname; jstring j_artistname; sp_track *track; for (int i=0;i< count;i++){ track = sp_search_track(search, i); if (track != 0 && sp_track_error(track) == SP_ERROR_OK){ const char *temp = sp_track_name(track); if (temp != 0 && strlen(temp) != 0){ j_trackname = env->NewStringUTF(temp); } int trackDuration = sp_track_duration(track); if (sp_track_error(track) != SP_ERROR_OK) log("sp_track_error: %s",sp_error_message(sp_track_error(track))); int trackDiscnumber = sp_track_disc(track); if (sp_track_error(track) != SP_ERROR_OK) log("sp_track_error: %s",sp_error_message(sp_track_error(track))); int trackIndex = sp_track_index(track); if (sp_track_error(track) != SP_ERROR_OK) log("sp_track_error: %s",sp_error_message(sp_track_error(track))); char buffer [64]; sp_link *link = sp_link_create_from_track(track, 0); if (link != 0){ sp_link_as_string(link, buffer, 64); } j_trackuri = env->NewStringUTF(buffer); sp_album *album = sp_track_album(track); if (sp_track_error(track) != SP_ERROR_OK) log("sp_track_error: %s",sp_error_message(sp_track_error(track))); int albumYear = 0; if (album != 0){ temp = sp_album_name(album); albumYear = sp_album_year(album); if (temp != 0 && strlen(temp) != 0){ j_albumname = env->NewStringUTF(temp); } } sp_artist *artist = sp_track_artist(track,0); if (sp_track_error(track) != SP_ERROR_OK) log("sp_track_error: %s",sp_error_message(sp_track_error(track))); if (artist != 0){ temp = sp_artist_name(artist); if (temp != 0 && strlen(temp) != 0){ j_artistname = env->NewStringUTF(temp); } } jmethodID methodIdAddResult = env->GetStaticMethodID(classLibspotify, "addResult", "(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)V"); env->CallStaticVoidMethod(classLibspotify, methodIdAddResult, j_qid, j_trackname, trackDuration, trackDiscnumber, trackIndex, j_trackuri, j_albumname, albumYear, j_artistname); if (env->ExceptionCheck()) { env->ExceptionDescribe(); env->ExceptionClear(); } env->DeleteLocalRef(j_trackname); env->DeleteLocalRef(j_trackuri); env->DeleteLocalRef(j_artistname); env->DeleteLocalRef(j_albumname); j_trackname = NULL; j_trackuri = NULL; j_artistname = NULL; j_albumname = NULL; } } jmethodID methodIdOnResolved = env->GetStaticMethodID(classLibspotify, "onResolved", "(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V"); jstring j_error = env->NewStringUTF(sp_error_message(sp_search_error(search))); jstring j_didyoumean = env->NewStringUTF(sp_search_did_you_mean(search)); env->CallStaticVoidMethod(classLibspotify, methodIdOnResolved, j_qid, success, j_error, j_didyoumean); if (env->ExceptionCheck()) { env->ExceptionDescribe(); env->ExceptionClear(); } env->DeleteLocalRef(classLibspotify); env->DeleteLocalRef(j_qid); env->DeleteLocalRef(j_error); env->DeleteLocalRef(j_didyoumean); log("Finished resolving query:'%s', success'%s', track count:'%d', qid:'%s'", sp_search_query(search), (success?"true":"false"), count, qid.c_str()); sp_search_release(search); delete &qid; }