智能手机多功能电子琴系统设计.ppt
智能手机多功能电子琴系统设计,导 师:沈在爱 答辩人:林剑国专 业:电子信息工程,Multi-function Electronic Keyboard System Design for Smartphone,智能手机多功能电子琴系统设计,课题研究背景开发环境介绍系统设计过程总结,我为什么要选择这个课题?,个人喜欢手机软件开发Java手机上还没有一款真正意义的电子琴软件研究成果很具有市场价值,课题研究背景,7亿多,中国现有手机用户,国内手机软件市场潜力巨大,课题研究背景,行业背景,Symbian,Linux,Windows,Paml OS,MAC OSX,Other,智能手机操作系统市场份额,课题研究背景,Symbian占据了智能手机系统的半壁江山而Symbian手机都支持Java平台,所以基于Java手机平台的软件市场需求是十分庞大的。,智能手机操作系统市场份额,课题研究背景,开发环境介绍,开发平台:开发工具:,J2ME,NetBeans,J2ME,定义:它是Java手机平台的技术规范,优点:可移植性好,继承了Java语言的优良特性,开发环境介绍,开发平台,Net,它是J2ME应用程序开发工具,优点:功能齐全,使用方便简洁且免费,开发环境介绍,Beans,开发工具,J2ME+NetBeans,电子琴系统,系统设计过程,系统设计功能简介该电子琴系统主要要实现的功能有:1、能显示电子琴键盘2、弹奏要能发音3、其它扩展功能,系统设计流程图,系统设计过程,电子琴系统主类MIDlet:它控制着整个程序的运行,拥有管理程序的创建、开始、暂停和结束的函数。,系统设计过程,电子琴系统闪屏的实现,启动闪屏:用于载入Logo画面,默认程序进入界面为横屏显示,Logo画面并不是必须的,但它增加了软件的吸引力。,系统设计过程,电子琴系统启动动画的实现,动画实现的最简单方法就是把动画的每一帧制作成图片,然后按顺序显示各个帧的图像,观察者会由于视觉残留效应,就会觉得是动画在播放。本软件启动动画只用一张图片,该图片是一张帷幕,在开始显示电子琴主界面前拉开,很形象。,系统设计过程,帷幕之后就是优美的电子琴界面,该动画通过线程完成,将这张帷幕图片在屏幕上延时依次重绘实现。,电子琴系统GameCanvas类的实现,GameCanvas实现的流程图,系统设计过程,初始化电子琴系统界面,clearScreen(g)方法初始化电子琴系统背景drawMusicName(g)方法初始化乐器名称drawDot(g)初始化音阶点,电子琴系统GameCanvas类的实现,系统设计过程,public void clearScreen(Graphics g)try imgBG=Image.createImage(/Res/+skin+/BG+h+.png);imgBG1=Image.createImage(/Res/+h+.png);catch(Exception e)g.drawImage(imgBG,0,0,Graphics.TOP|Graphics.LEFT);g.drawImage(imgBG1,0,0,Graphics.TOP|Graphics.LEFT);Image.createImage(“png图片路径”)用来创建Image对象,drawImage()方法用于绘制Image对象中的图像。,电子琴系统背景初始化clearScreen(g),初始化电子琴系统界面,完成的初始化电子琴系统界面,真实的电子琴键盘弹奏效果莫非两个状态,即按下和弹起状态,所以为了实现电子琴键盘动画显示,定义了两个方法KeyDown和KeyUp,用来实现电子琴键盘的按下与弹起状态显示。,电子琴键盘动态效果显示,电子琴系统GameCanvas类的实现,系统设计过程,KeyDown,电子琴键盘动态效果显示,电子琴系统GameCanvas类的实现,系统设计过程,KeyUp,电子琴键盘动态效果显示,电子琴系统GameCanvas类的实现,系统设计过程,playWave(int i);该模块实现了电子琴根据按下的不同按键实现不同音调播放,变量i参数范围为1,2,3,4,5,6,7,分别代表不同的音调。,电子琴系统GameCanvas类的实现,系统设计过程,电子琴弹奏声音的实现,private void playWave(int i)try java,io,InputStream is=getClass().getResourceAsStream(/Wav/+sound+/+w+i+.wav);Player player=Manager.createPlayer(is,audio/x-wav);player.realize();player.prefetch();player.start();player=null;catch(Exception e),声音播放playWave(int i),更换主题功能更换乐器功能横屏竖屏切换支持键盘、触摸屏用户帮助功能,电子琴系统GameCanvas类的实现,系统设计过程,丰富的扩展功能,通过changeSkin方法实现三套主题:默认主题 炫彩主题 经典主题,电子琴系统GameCanvas类的实现,系统设计过程,丰富的扩展功能,更换主题功能,炫彩主题,经典主题,通过changeSound方法实现四套乐器音色:电子琴 吉他 架子鼓 管弦乐,更换乐器功能,电子琴系统GameCanvas类的实现,系统设计过程,丰富的扩展功能,四套乐器,该软件默认是横屏显示,但也可以竖屏显示通过changeScreen方法实现,横竖屏切换,电子琴系统GameCanvas类的实现,丰富的扩展功能,系统设计过程,横竖屏切换,横竖屏切换,横竖屏切换,键盘事件响应用户按键操作,用到两个方法:keyPressed 和 keyReleased 指针事件响应用户触摸操作,用到两个方法:pointPressed 和 pointReleased,支持键盘、触摸屏,电子琴系统GameCanvas类的实现,丰富的扩展功能,系统设计过程,keyPressed方法,protected void keyPressed(int keyCode)Graphics g=getGraphics();switch(keyCode)case KEY_NUM1:num=1;KeyDown(g);/显示键盘按下效果 flushGraphics(a2*(num-1),b1+b2*(num-1),x,y);/绘制缓冲屏幕 playWave(1);/播放“都”音 break;,keyReleased方法,protected void keyReleased(int keyCode)Graphics g=getGraphics();switch(keyCode)keyUp(g);/显示键盘弹起效果 flushGraphics(a2*(num-1),b1+b2*(num-1),x,y);/绘制缓冲屏幕,帮助功能使用了与软件启动动画效果相类似的效果,帮助界面附带背景音乐(梁祝钢琴曲),十分悦耳。,用户帮助功能,电子琴系统GameCanvas类的实现,丰富的扩展功能,系统设计过程,返回,用户帮助功能,总结,在系统设计过程中碰到了挺多困难,但基本上已解决:(1)先用手机按键完成电子琴的功能,待完成后再实现触摸屏的电子琴功能,这样加快了系统制作进程;(2)通过线程实现了电子琴启动的动画效果;(3)通过精确的计算,对横竖屏幕坐标进行转换,实现了电子琴系统在横屏 与竖屏下皆可使用的功能;(4)通过对电子琴主题与乐器资源的分类整合有效实现了电子琴主题与乐器 的更换功能。该完成的智能手机多功能电子琴系统实现的功能有:(1)逼真模拟电子琴的弹奏;(2)3套主题轻松更换;(3)4种乐器任意选择;(4)屏幕横竖自由切换;(5)键盘及触摸屏皆可使用。,手机键盘操作说明,更换主题,帮助和返回,退出,更换乐器,1-7 弹奏键,8、9切换音调,OK键:切换屏幕方向左右方向键:更换乐器上下方向键:更换主题,切换屏幕,触摸屏操作说明,弹奏键盘,更换主题,更换主题,切换屏幕,退出,帮助,左右箭头调节音调,不足,虽然该软件已经实现的大多数功能,但仍存有不足,主要有:1、声音资源过大,软件使用过久会引起内存溢出2、软件按240*320主流分辨率设计,所以那些非主流分辨率有可能不能正常运行 请各位评委老师批评指正,感谢我的指导老师及在座评委老师谢谢!,