VRE实验5实验手册v30.docx
- 文档编号:29675814
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:13
- 大小:72.75KB
VRE实验5实验手册v30.docx
《VRE实验5实验手册v30.docx》由会员分享,可在线阅读,更多相关《VRE实验5实验手册v30.docx(13页珍藏版)》请在冰豆网上搜索。
VRE实验5实验手册v30
(项目五)手机多媒体开发—万万静听
1、项目名称:
项目名称:
手机多媒体开发—万万静听
课时安排:
16
2、项目目标:
万万静听项目效果图如下:
图5-1万万静听效果图
功能:
界面一为logo界面,程序启动3秒后跳转到界面二。
界面二为音乐播放界面,在该界面,点击上下方向键可以选择歌曲,点击OK键播放或暂停歌曲,点击左右方向键分别为降低、增大音量,点击左软键显示帮助界面,点击右软键显示退出提示。
界面三为帮助界面,在该界面,点击右软键返回界面二。
界面四为退出提示界面,在该界面,点击左软键退出程序,点击右软键返回播放界面。
说明:
学习VRE系统中的音频处理机制,完成这款音乐播放器。
通过本次实验让学员熟悉VRE平台程序架构、深入理解VRE的图形图像处理机制、VRE文件操作,掌握VRE音频的播放的实现。
(1)熟悉VRE程序架构
(2)掌握VRE应用程序开发基础
(3)深入理解VRE图形图像系统
(4)深入理解VRE文件操作
(5)掌握VRE资源管理器的使用
(6)掌握VRE音频处理机制
(7)生成手机版本,打包安装到手机运行
3、项目方式:
(1)老师带领下,每名同学独立完成该任务
4、项目步骤
4.1任务1:
修改应用程序的图标和标题(时间:
20分钟)
4.1.1任务描述
(1)修改应用程序的图标
(2)修改应用程序的标题
4.1.2任务目的
(1)熟悉VRE资源管理器及配置文件的使用
(2)掌握如何修改VRE应用程序的图标和标题
4.1.3任务要求
(1)编译生成手机版本,能在真机上正常运行。
4.1.4难点提示
参考项目三任务一
4.2任务2:
界面设计及框架搭建(时间:
30分钟)
4.2.1任务描述
(1)设计程序UI界面
(2)实现UI框架部分
4.2.2任务目的
(1)进一步掌握VRE框架
(2)掌握VREGUI设计方法
4.2.3任务要求
(1)UI设计美观,合理
(2)能够在模拟器上正常运行
4.2.4难点提示
(1)参考界面如图5-1所示。
(2)框架搭建中,首先在工程文件game.c的run()函数中创建控制logo的定时器,然后在UpdateGame()函数中根据界面标志位分别绘制相应的界面。
参考代码如下:
//应用程序状态
VMINTgame_state=0;
voidrun(void)
{
g_nRun=0;
if(timeid<0)
timeid=vm_create_timer(50,UpdateGame);
}
voidUpdateGame(VMINTbool_pause_game)
{
switch(game_state)
{
caseGS_PRELOAD:
Vre_Preload();
break;
caseGS_MAIN_MENU:
//显示主页面
Vre_MainMenu();
break;
caseGS_HELP:
Vre_Help();
break;
caseGS_QUIT:
Vre_Quit();
default:
break;
}
vm_graphic_flush_layer(layer_handles,1);
}
4.3任务3:
资源加载及文件查找(时间:
20分钟)
4.3.1任务描述
(1)加载程序所需的图片资源
(2)将资源导入到内存中
(3)查找硬盘下所有*.mp3文件,保存文件信息
4.3.2任务目的
(1)掌握资源管理器的使用
(2)掌握图片资源的导入方法
(3)掌握文件查找的方法
4.3.3任务要求
(1)将导入资源、文件查找功能封装成函数
(2)在模拟器上能正常运行
(3)以断点调试的方式保证结果的正确性
4.3.4难点提示
(1)资源导入功能,请参考项目三任务3
4.4任务4:
UI界面绘制(时间:
100分钟)
4.4.1任务描述
(1)绘制所有UI界面
(2)处理按键,使得各个UI界面之间能够切换
4.4.2任务目的
(1)深入理解VRE应用程序框架
(2)进一步掌握VREUI界面的绘制方法
(3)掌握各个UI界面间的切换方法
4.4.3任务要求
(1)所绘制的UI界面符合设计
(2)实现所需功能,能在模拟器上正确运行
(3)生成手机版本,能够在手机上正常运行
4.4.4难点提示
(1)在工程文件game.c的Vre_Preload()函数中绘制加载页面,同时查找指定目录下的歌曲名称,加载到内存中,为歌曲播放做准备。
参考代码如下:
voidVre_Preload()
{
if(loadingstep==0)
{
DrawLoadingBar();
}
elseif(loadingstep==1)
{
LoadRes(GIF_BACK,GIF_BACK);
}
elseif(loadingstep==2)
{
//查找歌曲名称读入内存
find_file("*.mp3");
}
elseif(loadingstep==3)
{
//读取第二个页面所需图片资源
LoadRes(JPG_TITLE1,JPG_TITLE1);
}
elseif(loadingstep==4)
{
game_state=GS_MAIN_MENU;
loadingstep=0;
return;
}
loadingstep++;
}
(2)在game.c的Vre_MainMenu()函数中绘制播放列表页面,播放列表界面包括歌曲名称、软件名称、界面背景以及按键信息的绘制。
参考代码如下:
voidVre_MainMenu()
{
VMCHARszName[256];
vm_ucs2_to_gb2312(szName,256,g_info[g_select].filename);
Update_MainMenu_key();
//释放不需要资源
UnLoadRes(JPG_LOAD,JPG_LOAD);
//绘制背景
vm_graphic_blt(screen_buffer,0,0,IMAGE[GIF_BACK],0,0,res_pic[GIF_BACK]->width,res_pic[GIF_BACK]->height,1);
draw_title_bar(JPG_TITLE1,"万万静听",szName);
draw_menu_bar(BUTTON_HELP,BUTTON_EXIT);
draw_content_menu(6,TITLE_HEIGHT);
}
(3)接下来在game.c文件的Update_MainMenu_key()函数中实现软件的按键处理,按键处理分别实现歌曲的选择、调节音量、播放暂停,以及进入帮助和退出功能,参考代码如下:
//所有音频文件总数
VMINTg_count;
//当前选中的索引
VMINTg_select;
voidUpdate_MainMenu_key()
{
if(keypress==VM_KEY_EVENT_UP)
{
keypress=0;
keymessage=0;
}
if(keypress==VM_KEY_EVENT_DOWN)
{
switch(keymessage)
{
caseVM_KEY_LEFT_SOFTKEY:
game_state=GS_HELP;
//帮助
break;
caseVM_KEY_RIGHT_SOFTKEY:
//退出
game_state=GS_QUIT;
break;
caseVM_KEY_OK:
break;
caseVM_KEY_LEFT:
//减少音量
break;
caseVM_KEY_RIGHT:
//增大音量
break;
caseVM_KEY_UP:
if(game_state==GS_MAIN_MENU)
{
g_select--;
if(g_select<0)
g_select=0;
if(g_select>2)
{
if(g_select==g_start+2)
{
g_start--;
}
}
}
break;
caseVM_KEY_DOWN:
if(game_state==GS_MAIN_MENU)
{
g_select++;
if(g_select>=g_count)
g_select=g_count-1;
if(g_select!
=g_count-2)
{
if(g_select==g_line+g_start-2)
{
g_start++;
}
}
}
break;
}
keypress=0;
keymessage=0;
}
}
4.5任务5:
音频播放及音量处理(时间:
30分钟)
4.5.1任务描述
(1)实现音频文件播放
(2)实现自动的顺序播放
(3)实现音量的调整
(4)处理相关的按键,完成整个项目
4.5.2任务目的
(1)掌握VRE的音频播放
(2)掌握VRE音频控制操作
(3)掌握开发一款播放器软件的整体思路
4.5.3任务要求
(1)在模拟器上能够正常运行
(2)能够实现音乐顺序播放
(3)生成手机版本,能在手机上正确运行
4.5.4难点提示
(1)在game.c文件的music_play_mp3()函数中添加代码播放当前选中音乐文件,实现参考代码如下:
#defineMUSIC_FOLDER"mymusic"
//音量标记
VMINTg_nVolume;
//是否处于播放状态标记0,初始化,停止1,播放,2,暂停2,恢复播放
VMINTg_nRun;
voidmusic_play_mp3(void)
{
VMWCHARszpath[255];
VMCHARszShortpath[255];
sprintf(szShortpath,"%c:
\\%s\\",drv,MUSIC_FOLDER);
vm_gb2312_to_ucs2(szpath,255,szShortpath);
wstrcat(szpath,g_info[g_select].filename);
vm_set_volume(g_nVolume);
vm_audio_play_file(szpath,music_mp3_cb);
g_nRun=1;
}
(2)在game.c的回调函数music_mp3_cb()中,实现音频文件顺序播放,实现参考代码如下:
voidmusic_mp3_cb(VMINTresult)
{
switch(result)
{
caseVM_AUDIO_RESULT_STOP:
{
//下一首
if(g_select { g_select++; music_play_mp3(); } } 。 。 。 } 4.6项目扩展 4.6.1要求 (1)实现音乐的循环播放 (2)实现音乐的随机播放 4.6.2实现思路 (1)在程序里我们使用索引g_select表示当前选择的文件、当前播放的文件,用g_count表示当前音乐文件的总数,当顺序播放到最后一个即,select等于g_count-1时,将g_select置零即可。 (2)随机播放,我们只需要,在用户没有按键的情况下,产生随机数范围在(0~g_count-1),让g_select等于随机数即可。 5、项目总结报告 项目总结报告 项目名称 开发环境配置与搭建 项目组成员 完成情况 □全部完成□大部分完成 □少部分完成□没有思路 自我评分 代码规范度 项目中遇到的主要问题及解决办法 项目体会 自我评定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VRE 实验 手册 v30