MSTAR平台开发入手简中版.ppt_第1页
MSTAR平台开发入手简中版.ppt_第2页
MSTAR平台开发入手简中版.ppt_第3页
MSTAR平台开发入手简中版.ppt_第4页
MSTAR平台开发入手简中版.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DemoApp快速指导SunnyWang(王乔),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,2,内容,MAE平台简介Statemachine(状态机)Widget/Container/Model(控件/容器/数据容器)View(视图)APManager(应用程序管理者)基于MAE平台设计第一个应用程序设计状态机用XFSM实现状态机用XRG装载资源编写代码在模拟器上运行,1MAE平台简介,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,4,1.1MAE平台架构,1.2AP的组成,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,5,1.3状态机(Statemachine),状态(Mode)状态跳转(Transition)执行顺序(Sequence),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,6,1.3.1状态和活动ModeandActivities,一个状态包含状态名(Modename)进入活动(Entryactivity)退出活动(Exitactivity),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,7,1.3.2状态跳转(Transition),状态跳转包含:源状态(SourceMode)目标状态(DestinationMode)跳转类型(TransitionType)事件/条件(Event/Condition):Internal,External行为(Action),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,8,SourceMode,TargetMode,Event&Condition(optional),RunAction(optional),ExitActivities,EntryActivities,1.3.3执行顺序(Executesequence),进入退出函数和action的执行顺序执行Condition函数:returnTRUE退出源状态(Exist函数)执行Action函数进入目的状态(Entry函数),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,9,1.4XMMIUIlayout,XMMI给AP提供了containers和widgets来设计UIlayoutWidget是基本的UI单位,例如Imagewidget和Textwidget等Container用来把多个widget(和container)放在一起组成一个显示单元UIflow是由Viewmanager控制的多个View组成的Model是数据的容器,通常和Widget搭配使用。,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,10,1.5Widget,显示数据处理事件只知道自己的大小而不知道自己的位置必须放在一个Container里面通常情况下只能搭配一种Model需要监听数据的改变有一些共同和特殊的属性(properties)Color,padding,widget-specificflags,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,11,1.6Container,有一个(widget)stack来存放其子widget对widget的Layout进行管理处理Widget绘制的请求自下而上的绘制其子widget,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,12,1.7Model,一个数据容器只用来存放数据而不去管数据如何呈现可以对其存放的数据进行操作有一个通知机制(IModel)添加listener(注册一个callback函数)通知取消(Cancel)listener,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,13,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,14,1.8Container,Widget和Model之间的通知机制,Widget,Container,Model,AddListener,Notify,Events,ICONTAINER_Invalidate(),IWIDGET_Draw(),1.9VDF(ViewDescriptionFile)(一),什么是VDF?VDF即ViewDescriptionFile,是一种XML格式的编程语言,我们可以用VDF来描述手机画面。如widget和container的大小、位置、属性等。为什么要使用VDF?我们可以在C代码中把widget插入container,但是对于复杂的View来说这样就太麻烦了。于是XMMI提供了VDF的机制来简化UI的实现。VDF的优点语法简单,容易使用具有高可读性容易定制,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,15,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,16,1.9VDF(ViewDescriptionFile)(二),ResourceFile.c,Generator,Headerfile(ViewID&WidgetID),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,17,1.9VDF(ViewDescriptionFile)(三),VDF的语法可以参考ViewDefinitionLanguage.dtd,mae_vdftags.h,1.10APManager,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,18,AppletA,AppletB,A,APHistory,MAE,B,1.10APManager,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,19,AppletA,AppletB,A,APHistory,MAE,B,1.11引用个数Referencecount,MAE把每一个APP/SRV/Widget看做一个对象,Referencecount用来表示使用该对象当前被引用的个数。当一个对象被另一个对象创建或引用时,这个对象的Referencecount会被加一。当一个对象被引用它的对象释放的时候,MAE会将其Referencecount减一,然后判断Referencecount是否等于0。只有Referencecount等于0时该对象才会真正被释放。,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,20,1.12事件处理流程Eventflow,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,21,每一个object有它自己的事件处理函数叫做xxx_HandleEvent,1、用户可以对接收到的Event进行处理,2、该Event被交给Viewmanager处理,3、如果Viewmanager未处理,把该事件交给statemachine处理,2.基于MAE平台设计第一个应用程序,将讲述以下内容,创建一个范例AP使用XFSM设计AP通过主菜单启动AP,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,23,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,24,2.1设计工具,XMMI提供了以下工具,这些工具让我们设计AP变得更容易XFSM(XmmiFiniteStateMachine):这个工具帮助我们用状态机来设计AP。程序员可以使用XFSM来设计状态树和状态条状。XFSM会把这些设计转变成C代码。XRG(XmmiResourceGenerator):XRG管理所有的资源,这些资源会在AP中用到,例如:字符串图片和铃声VDF用户设定值(可定制)其他(菜单,字体,PLMN表格等),2.2XFSM与XRG的关系,XFSM帮助我们建立AP的程序框架,XRG提供AP要用到的资源,将框架和资源组合在一起,2.3创建一个新AP的过程,AP设计阶段(状态机,UI流图)使用XFSM实现状态机创建一个新工程设计状态树(ModeTree)创建事件(Event)设计状态跳转(Transition)将设计转成C代码使用XRG新增需要的资源添加需要的字符串,图片添加demo中要用到的菜单添加Shortcut创建一个新的VDF文件和头文件(headfile),并添加到XRG中编辑mmi_mainmenuapp.vdf,将demo加入主菜单编译XRG编写代码在模拟器上运行,休息,打电话,睡觉,闭眼,睁眼,去洗澡,9:00PM,电话铃响,去接电话,接完电话,去睡觉,洗完澡,状态分级后的简化状态模型,2.4状态跳转图,状态树,英文化,系统化,范例APP状态树,2.5状态树,2.6UIFlow,SelectDemo,Incomingcall,Endcall,Endcall,Select9:00PM,GotoBed,3用XFSM实现状态机,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,31,3.1创建一个新XFSM工程(一),在XFSM打开工程文件1.运行toolsXFSMXFSMWin.exe,菜单FileOpen(projsccustomerSZsrcmmiresourceXFSMProjectXFSMWS_xmmi.xml),3.1创建一个新XFSM工程(二),新增一个子工程,菜单FileAddNewProject在弹出的串口输入如下信息,文件路径选择projscapplicationmmiapp,设置页面,默认值即可。如果需要为DEMOAPP设置一个编译宏,可以再CompilerOption一项中输入“definded(_MMI_DEMOAPP_)”,3.1创建一个新XFSM工程(二),3.2设计状态树,Init:entryActive:TakeRest:entry&exitWatchTV:Entry&ExitTakeShower:entry&exitAnswerCall:entry&exitGotoBed:entry&exitError:entry&exitSuspend:Stop:,3.2.1添加Initmode,在Modes页面,在rootmode“DemoApp”上点鼠标右键.选择“Additem“.,3.2.2添加Activemode,3.2.3添加Suspendmode,3.2.4添加Stopmode,3.2.5添加TakeRestmode,3.2.6添加AnswerCallmode,3.2.7添加GotoBedmode,3.2.8添加ShowErrormode,3.3添加内部事件,InitSuccessShowErrorRingTakeShowerEndCallGoToSleepWatchTVCloseApp,3.4添加状态跳转,状态跳转列表Transitions:FROM-TO-TYPE-ACTION-CONDITION-EVENT1-EVENT2-._DemoApp-_DemoApp-internal-TRUE-FALSE-DEMOAPP_IEVT_CloseApp_DemoApp-_Active_Error-default-FALSE-FALSE-DEMOAPP_IEVT_ShowError_Init-_Active-default-FALSE-FALSE-DEMOAPP_IEVT_InitSuccess_Active_TakeRest-_Active_AnswerCall-default-FALSE-FALSE-DEMOAPP_IEVT_Ring_Active_AnswerCall-_Active_TakeRest-deep-FALSE-FALSE-DEMOAPP_IEVT_EndCall_Active_TakeRest_WatchTV-_Active_TakeRest_TakeShower-default-FALSE-FALSE-DEMOAPP_IEVT_TakeShower_Active_TakeRest_TakeShower-_Active_GotoBed-default-FALSE-FALSE-DEMOAPP_IEVT_GoToSleep_Active_TakeRest_TakeShower-_Active_TakeRest_TakeShower-internal-TRUE-FALSE-MAE_EVT_KEY_PRESS,3.4.1添加transition(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,45,3.4.2添加transition(二),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,46,3.4.3添加transition(三),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,47,3.4.4添加transition(四),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,48,3.4.5添加transition(五),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,49,3.4.6添加transition(六),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,50,3.4.7添加transition(七),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,51,3.4.8添加transition(八),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,52,步骤4添加transition,3.4.9状态跳转结果,3.4.10生成代码,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,54,将XFSM的设计生成代码,执行菜单Build-GenAll,3.4.11XFSM帮我们做的修改,DemoApp源文件在App_mmiSourceFilesapp下创建DemoApp文件夹,并将mmi_DemoApp.c放入其中的src目录DemoApp头文件在DemoAppinc目录中放mmi_DemoApp.h,在DemoAppincpriv中放mmi_DemoApp_priv.h模拟器AP包含路径:修改projscapplicationmmiappAppIncludePath_V2.ini.makefile:修改projscapplicationmmiappapp.makClasseID头文件:修改projscapplicationmmicoremmi_clstbl.h,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,55,4在XRG中添加资源,4.1打开XRG工程4.2添加字符串4.3添加图片4.4添加菜单ID4.5添加ShortcutfunctionID4.6添加与修改VDF,4.1打开XRG工程,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,57,运行toolsXRGXRG.exe,菜单File-OpenProject打开工程文件projsccustomerSZsrcmmiresourcexmmi_basexmmi.xml,4.2添加字符串,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,58,添加一个字符串的步骤如下:打开StringIDManager添加一个新的字符串ID填充该ID对应的每种语言的内容,4.2.1打开StringIDManager,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,59,添加字符串在StringTable上点击右键,在弹出的菜单中,选择StringIDManager,4.2.2添加一个新的字符串ID(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,60,添加字符串在Common上点击右键,在弹出的菜单中,选择Add-Single,4.2.2添加一个新的字符串ID(二),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,61,添加字符串生成如下红框内所示的新字符串ID,4.2.2添加一个新的字符串ID(三),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,62,添加字符串按红色框内修改字符串ID,然后点击OK,4.2.3填充新字符串内容(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,63,添加字符串双击Chinese_S,在String处输入“样例”,添加该字符的中文文字,4.2.3填充新字符串内容(二),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,64,添加字符串双击English,在String处输入“Demo”,添加该字符的英文文字,4.2.4参照前面的步骤添加其他字符串,TXT_LIL_N_DEMO_WATCH_TV(中文“看电视”,英“WatchTV”TXT_LIL_N_DEMO_REACH_9(中文“9点到”,英“9:00PM”)TXT_LIL_N_DEMO_TAKE_SHOWER(中文“洗澡”,英“Takeshower”)TXT_LIL_N_DEMO_SPREAD_SOAP(中文“擦肥皂”,英“Spreadsoap”),4.3添加图片,4.3.1将图片加入目录,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,67,添加图片在目录projsccustomerSZsrcmmiresourcexmmi_base_ResimageQVGA中新建Demo文件夹,并将DEMO_IMG_ANSWER_CALL.png,DEMO_IMG_SLEEP.png,DEMO_IMG_TAKE_SHOWER.png拷贝到此目录中,4.3.2打开图片列表,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,68,添加图片双击image_list,XRG会装载所有图片资源界面。,4.3.3添加图片(wxd),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,69,添加图片点击鼠标右键,选择Add-Multiple,此功能可以一次把一个目录下的图片添加进来。Single就只能一次添加一张图片。在弹出的窗口选中Demo,如右图。然后点击OK,4.4添加菜单ID,4.4.1打开菜单列表,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,71,添加菜单双击menu_list,XRG装载MENU界面,如下图。点击红色框内的MainMenu切换到mainmenu界面,4.4.2添加该AP在主菜单中菜单ID(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,72,添加菜单在Organizer上点击右键,选择AddSub-Menu,在弹出的对话框中按右图进行输入,4.4.3添加该AP在主菜单中菜单ID(二),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,73,添加菜单输入完毕后如下所示,4.4.4添加AP内部的菜单ID(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,74,添加菜单切换到APMENU页面,在Application上点右键,在新窗口如下输入,4.4.4添加AP内部的菜单ID(二),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,75,添加菜单再次在application上点右键,输入左图数据,添加完菜单后在树状结构中新增菜单,如右图,4.5添加ShortcutfunctionID(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,76,在Setting上点击右键,选择LibraryMode.在弹出的窗口中,点开Enum,双击ShortcutsFunctionID,4.5添加ShortcutfunctionID(二),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,77,添加Shortcut点击ADD,添加SHORTCUTS_FUNC_DEMO,4.6添加VDF,4.6.1准备VDF和头文件,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,79,编辑VDF和头文件demoapp.vdf,放入左图所示目录中projsccustomerSZsrcmmiresourcexmmi_base_ResvdfQVGAappDemommi_demoapp_view_id.h,放入右图所示目录中projscapplicationmmiappDemoAppinc,4.6.2打开VDF列表,2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,80,添加VDF双击vdf_list,XRG装载VDF界面,4.6.3增加一个VDF(一),2019/11/19,Copyright2008MStarSemiconductor,Inc.Allrightsreserved.,81,添加VDF点击鼠标右键,选择Add-Single,4.6.3增加一个VDF(二),2019/11/19,Copyright2008MStarSem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论