我正在尝试按照http://damienradtke.org/playing-with-the-spotify-api/的指导在 android 中创建一个简单的播放器,使用它我可以在 ubuntu 中从 spotify 播放曲目但我不能甚至建立在android上。到目前为止,我能够从 spotify 查询曲目,但是当我尝试使用 ALSA 添加播放功能时,这简直就是一场噩梦。我已经尝试使用 openAl 并且仍然被卡住。有没有更简单的方法在 jni 中播放流式音频?
在我的 &on_search_complete 回调结束时,我调用了一个函数“play”,如下所示:
void play(sp_session *session, sp_track *track)
{
if(DEBUG_MODE) __android_log_print(ANDROID_LOG_INFO, "spotify", "attempting to play track...");
sp_error error = sp_session_player_load(session, track);
if (error != SP_ERROR_OK) {
if(DEBUG_MODE) __android_log_print(ANDROID_LOG_INFO, "spotify", "Error: %s\n", sp_error_message(error));
exit(1);
}
if(DEBUG_MODE) __android_log_print(ANDROID_LOG_INFO, "spotify", "Playing...");
sp_session_player_play(session, 1);
}
这会导致 &on_music_delivery 回调被执行,我相信这是我需要添加播放代码的地方。
static int on_music_delivery(sp_session *session, const sp_audioformat *format, const void *frames, int num_frames)
{
if(DEBUG_MODE) __android_log_print(ANDROID_LOG_INFO, "spotify", "in on_music_delivery");
}
我在使用 ALSA 构建代码方面收效甚微,有人可以在这里指出正确的方向吗?它令人沮丧,我不想在最后一关放弃。注意:我是 C 语言的初学者