请教:mdi_audio_store_file和mdi_audio_restore_file_with_vol_path的用法

BuleRiver 2010-03-18 02:47:58
大家好!
我现在使用mdi_audio_play_file_portion_with_vol_path()函数播放一首歌曲: test.mp3,这首歌的长度为3分钟,当播放到1分钟的时候,电话来了,电话铃声打断了test.mp3的播放,我直接挂断电话,我预期test.mp3应该从1分钟的地方接着往下播放,但是出现的情况却是又从头开始播放了。请大家帮我分析一下原因,以及如何做到这一点,谢谢!!!
参考系统播放器的代码,我写的具体代码如下:

void test_store_restore_update_progress_time(void)
{
mdi_audio_get_progress_time(&progress_time);
}

void test_store_restore_callback(mdi_result result)
{
if (MDI_AUDIO_TERMINATED == result)
{
mdi_audio_store_file(0);
}
}

BOOL test_store_restore_mdi_callback(mdi_result result)
{
mdi_audio_restore_file_with_vol_path(
L"d:\\text\\test.mp3",
DEVICE_AUDIO_PLAY_ONCE,
NULL,
test_store_restore_callback,
MDI_AUD_VOL_EX(6),
MDI_AUD_PTH_EX(MDI_DEVICE_SPEAKER2));

return TRUE;
}

// 主函数
void test_store_restore_play(void)
{
mdi_result result;

progress_time = 0;
mdi_audio_set_background_handler(MDI_BACKGROUND_APP_AUDPLY, test_store_restore_mdi_callback);
result = mdi_audio_play_file_portion_with_vol_path(
L"d:\\text\\test.mp3",
progress_time,
0,
DEVICE_AUDIO_PLAY_ONCE,
NULL,
mmi_audply_play_callback_hdlr,
MDI_AUD_VOL_EX(6),
MDI_AUD_PTH_EX(MDI_DEVICE_SPEAKER2));
if (result != 0)
{
DisplayPopup((U8*)L"ERROR", IMG_GLOBAL_OK, 1, 5000, 13);
return;
}
else
{
StartTimer((U16)SOMUSIC_PLAYER_PROGRESS_CALLBACK_TIMER, 1000, test_store_restore_update_progress_time);
}
}

在goto_main_menu()中调用主函数:

SetKeyHandler(test_store_restore_play, KEY_LSK, KEY_EVENT_DOWN);
...全文
461 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hogak 2010-09-14
  • 打赏
  • 举报
回复
这个问题是你在调用完mdi_audio_play_file_portion_with_vol_path播放歌曲以后,电话接入,而此时没有做保存文件播放的信息的处理,挂掉电话以后使用mdi_audio_restore_file_with_vol_path函数,此时该函数得到播放的时间为0。当使用mdi_audio_restore_file_with_vol_path函数播放的时候你再打进电话就可以发现它会从刚刚的时间位置播放,因为在test_store_restore_callback函数中调用了mdi_audio_store_file函数保存了信息。
BuleRiver 2010-03-19
  • 打赏
  • 举报
回复
没有人遇到过这个问题吗???
BuleRiver 2010-03-18
  • 打赏
  • 举报
回复
谢谢!!!
电话来了,由于电话铃声打断,系统会回调我事先设置好的回调函数,并且传给我MDI_AUDIO_TERMINATED,这个时候我调用了mdi_audio_store_file()来保存文件播放的信息,等到电话铃声放完了,系统会回调我实现设置的test_store_restore_mdi_callback()函数,所以在这个函数中,我调用了mdi_audio_restore_file_with_vol_path()来恢复播放,但是它不是从我原来的地方开始播放,而是从开头播放,所以我很疑惑,另外,我看系统播放器也是这样调用的,它就可以实现从原来被打断的地方继续播放。
肯定是我哪里没有考虑到!!!
chenzhp 2010-03-18
  • 打赏
  • 举报
回复
电话来了,暂停MP3播放

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧