芯方式

从file manager中打开音频、视频文件时也能切换到上一首/下一首

0
阅读(922)

[DESCRIPTION]
从file manager中打开音频、视频文件时也能切换到上一首/下一首
[SOLUTION]
以Audio为例,Vedio的实现方法类似:
1.FileMgrServicehdlr.c (plutommi\mtkapp\filemgr\filemgrsrc)中
mmi_fmgr_audio_play_hdlr()中
注释掉:
//mmi_media_app_play_audio(filepath, NULL, 0);
添加icfans
mmi_audply_single_play_start(filepath, NULL, 0);
2.在MediaPlayerSingleApp.c (plutommi\mtkapp\mediaplayer\mediaplayersrc)中添加如下全局变量及函数
变量:
U8 Mediaplayer_Single_buffer[SRV_FMGR_FOLDER_FILELIST_MEM_SIZE];
WCHAR filename[SRV_FMGR_PATH_MAX_FILE_NAME_LEN + 1] = {0};
SRV_FMGR_FILELIST_HANDLE audio_fhlr;
S32 audio_index;
函数:
void mmi_audply_single_play_start( UI_string_type filefullname, void (*exit_callback_func)(void), U16
title_icon)
{
FMGR_FILTER filter;
WCHAR *folderpath;
FMGR_FILTER_INIT(&filter);
FMGR_FILTER_SET_AUDIO(&filter);
FMGR_FILTER_CLEAR(&filter, FMGR_TYPE_VM);
#if defined(__MMI_PURE_AUDIO__)
FMGR_FILTER_SET(&filter, FMGR_TYPE_3GP);
FMGR_FILTER_SET(&filter, FMGR_TYPE_3G2);
FMGR_FILTER_SET(&filter, FMGR_TYPE_MP4);
#endif
#ifdef __DRM_V02__
FMGR_FILTER_SET(&filter, FMGR_TYPE_ODF);
#endif
mmi_ucs2cpy(filename,filefullname);
folderpath =(WCHAR *)filefullname;
srv_fmgr_path_remove_filename(folderpath);
srv_fmgr_folder_filelist_create((const WCHAR *)folderpath, &filter, srv_fmgr_sort_get(),
Mediaplayer_Single_buffer, SRV_FMGR_FOLDER_FILELIST_MEM_SIZE, &audio_fhlr);
srv_fmgr_filelist_refresh(audio_fhlr, NULL, 0, 0, mmi_audio_play_filelist_refresh_proc, NULL);
//mmi_medply_single_play_audio(filefullname, NULL);
}
3.修改mmi_medply_single_press_next_button_up中case SINGLE_STATE_AUDIO_READY:为
case SINGLE_STATE_AUDIO_READY:
{
mmi_medply_main_screen_set_and_draw_button(MMI_MEDPLY_RGN_ID_NEXT,
MMI_MEDPLY_RGN_STATUS_UP);
mmi_medply_main_screen_blt();
//chenchao add below
file_count = srv_fmgr_filelist_count(audio_fhlr);
audio_index++;
if(audio_index >= file_count)
{
audio_index = file_count - 1;
}
mmi_medply_single_press_stop_button_up();
srv_fmgr_filelist_get_filepath(audio_fhlr,audio_index,filename,SRV_FMGR_PATH_MAX_FILE_NAME_LE
N);
mmi_medply_single_play_audio(filename, NULL);
break;
}
4.修改mmi_medply_single_press_prev_button_up()中 case SINGLE_STATE_AUDIO_READY:为
case SINGLE_STATE_AUDIO_READY:
{
mmi_medply_main_screen_set_and_draw_button(MMI_MEDPLY_RGN_ID_PREV,
MMI_MEDPLY_RGN_STATUS_UP);
mmi_medply_main_screen_blt();
//chenchao add below
audio_index--;
if(audio_index <= 0)
{
audio_index = 0;
}
mmi_medply_single_press_stop_button_up();
srv_fmgr_filelist_get_filepath(audio_fhlr,audio_index,filename,SRV_FMGR_PATH_MAX_FILE_NAME_LE
N);
mmi_medply_single_play_audio(filename, NULL);
//chenchao add above
break;
}