1、目 录第一章 daba系统概述1.daba系统简介 22.bada系统的特点 3 3.bada系统框架 44.应用机型 55.bada系统的发展 6第二章 技术分析1.bada环境搭建 91.1安装步骤 101.2启用程序设置工作空 122.第一个 Helloworld Bada 程序 123.helloworld详细分析 19第三章 总体设计1.系统分析 231.1系统可行性分析 231.2 系统功能分析 232.系统设计 232.1系统总体思想 232.2 程序流程图 242.3 系统框图 252.4 各模块详解 25 3. 程序测试 30 第一章 bada系统概述1. bada系统简介b
2、ada(朝鲜语:)是韩国三星公司自行开发的智能手机平台,底层为Linux核心。支持丰富功能和用户体验的软件应用,于2009年11月10日发布。bada在韩国语里是“海洋”()的意思。bada的设计目标是开创人人能用的智能手机的时代(Smartphone for Everyone)。它的特点是配置灵活、用户交互性佳、面向服务优。非常重视SNS整合和基于位置服务应用。三星bada包括一个全新的UI框架,支持下一代三星触摸式UI。主UI简单易用,而不会降低使用效率。UI框架从现有的触摸式UI引入开放端的创新形式,以更好的提供改善的用户体验。 有些额外的UI工具包括:将Adobe Flash Play
3、er和WebKit互联网浏览器直接嵌入本地bada程序中的能力,无缝继承出色的UI技术。同时,bada地图控件被轻松嵌入你的程序中,从而为用户提供互动的地图和路径POI功能。 bada平台提供各种用户互动方式,包括运动传感,有效的振动控制,和面部识别。这些界面提供了更大的创意空间,改善了用户互动体验。 三星bada还提供机制,以开发基于传感器的,情景感知的程序。具有天气服务和传感器,如加速、磁性、倾角,GPS和接近传感器,程序开发人员可以轻松执行情景感知的互动程序。2.bada系统的特点(1)全面的用户交互三星bada包括一个全新的UI框架,支持下一代三星触摸式UI。主UI简单易用,而不会降低
4、使用效率。UI框架从现有的触摸式UI引入开放端的创新形式,以更好的提供改善的用户体验。有些额外的UI工具包括:将Adobe Flash Player和WebKit互联网浏览器直接嵌入本地bada程序中的能力,无缝继承出色的UI技术。同时,bada地图控件被轻松嵌入你的程序中,从而为用户提供互动的地图和路径POI功能。bada平台提供各种用户互动方式,包括运动传感,有效的振动控制,和面部识别。这些界面提供了更大的创意空间,改善了用户互动体验。三星bada还提供机制,以开发基于传感器的,情景感知的程序。具有天气服务和传感器,如加速、磁性、倾角,GPS和接近传感器,程序开发人员可以轻松执行情景感知的
5、互动程序。(2)以服务为导向三星bada引入了几个全新的以服务为导向的功能,从而与传统的移动操作系统区别开来。这些全新的功能包括社交网络,内容管理,基于定位的服务和商务服务。所有的服务都由后端bada服务器提供支持。开发人员现在可以创建以服务为导向的程序,相比开发移动独立应用程序而言要轻松很多。社交网络程序可以管理用户配置文件,包括程序用户的伙伴信息,并且可以将用户加入大部分受欢迎的社交网络服务。内容管理程序可以储存并搜索设备和服务器上的内容。位置程序可以使用地标商店,地图,和图像地理编码服务。商务程序可以销售产品,如程序中的游戏内容。(3)开放,可配置三星bada可以让开发人员充分利用移动服
6、务功能,轻松创建令人激动的程序。程序可以使用设备功能,拨打电话,发送信息,或者读取联系表,因为不同的程序控件让开发人员创建了更为丰富,但具备一致性的程序。不同的服务程序可以共享信息,如个人配置文件,社交关系,时刻表,和需要用户简单确认的内容,以提供与个人更为相关的服务,拓展合作性服务。例如,社交网络程序可以与商务和基于定位的程序共享用户信息,从其它内容发布程序中获取照片等。bada平台为内核可配置的,因此它可在Linux内核和实时OS内核上运行,这样Bada就比其它移动操作系统适用于更多的设备。三星bada使用Eclipse和GNU工具链,向开发人员提供广受欢迎的,可扩展的开发环境3.bada
7、系统框架bada系统由操作系统内核层、设备层、服务层和框架层组成。支持设备应用、服务应用和Web与Flash应用。其中: 操作系统内核层:根据设备配置不同,可以是Linux操作系统或者其他实时操作系统。 设备层:在操作系统之上提供设备平台的核心功能,包括系统和不安全管理、图形和窗口系统、数据协议、电话和视频音频多媒体管理等。 服务层:由应用引擎和Web服务组件组成,它们与bada服务器互联,提供以服务为中心的功能。 框架层:由应用框架和底层提供的函数组成,不为第三方开发者提供C+开放API。按bada首席架构师、三星手机副总裁Justin Hong的说法,设备层来自三星十年前开始开发的自有平台
8、,而服务层和框架层的开发始于四年前。在工具方面,bada使用Eclipse和GNU工具链。4.应用机型三星S8500 三星S8500 三星F859 三星S7250D 三星S7230E 三星s8530 三星S5330 三星wave575 三星S5750E 三星W689 三星S5380 三星S5330 三星waveIII / s5600 三星GT-S5380D5.bada系统的发展自从2010年发布自主开发的Bada操作系统以来,三星已经推出了多款采用Bada系统的手机,比如Bada系统的开山之作三星Wave及其升级版Wave 2。天下赢家 日前,三星宣布,将推出三款采用最新Bada 2.0系统的
9、新机三星Wave 3、Wave M和Wave Y.最新报道称,惠普将向三星出售webOS的使用权,授权后三星可使用webOS开发智能手机、平板电脑等产品。天下赢家 不过,三星CEO崔志成在近日接受采访时明确否认了这一消息。天下赢家 另外,关于三星示好微软发力芒果系统的消息也屡见报端。天下赢家 三星近期的一系列动作以及相关传闻,透露出三星欲与安卓保持距离,转移过分依赖安卓所带来的风险。天下赢家 然而,这一战略转移并非易事,三星需要谨慎探索和一段较长的过渡期。天下赢家 (1)三星大力发展自主操作系统受到谷歌收购摩托罗拉移动的影响,三星有意拓展除Android系统以外的产品线,例如其独家的Bada系
10、统,这一系统包括UI元素、三维动画、多点触控、动作传感器和SNS、GPS等多种用户互动提供API,保证应用程序能充分利用强大的硬件设备。天下赢家 在其发布的三款采用其独家Bada 2.0系统的智能机Wave 3、Wave M和Wave Y三款手机中,Wave 3机能最强。天下赢家 它搭载4英寸WVGA Super AMOLED屏幕,采用1.4GHz处理器,500万像素自动对焦摄像头。天下赢家 其全金属外壳由阳极电镀铝制作而成,重122克。天下赢家 Wave M和Wave Y为中低端机型,Wave M采用832MHz处理器,搭载3.65英寸320480分辨率屏幕,配备500万像素摄像头。天下赢家
11、 Wave Y采用与Wave M一样的处理器和屏幕,屏幕更小为3.2英寸,背置200万像素摄像头。天下赢家 系统方面,这三款新机都采用三星独家Bada 2.0系统,内置三星最新发布的ChatOn移动即时通讯服务。天下赢家 此外,部分新机型还支持近场通讯(NFC)、语音识别和Wi-Fi等功能。天下赢家 三星CEO崔志成近期公开表示,公司正在致力于提升自家平台Bada的软件功能,三星在这方面的投入远比外界猜想的要多。天下赢家 而近日韩国政府也声称,要举全国之力,集合全韩优秀的IT公司诸如三星、LG来共同设计出一款优秀的手机操作系统。天下赢家 韩国商务部副部长明确表示,“长远来看,我们不能仅仅依赖谷
12、歌。天下赢家 ” 韩国政府考虑到了外来系统如Android及iOS系统对国家信息安全的风险。天下赢家 近来,三星不断发力Bada操作系统,估计也将韩国政府国家安全这一因素考虑在内。天下赢家 (2)三星欲化解安卓风险近期,谷歌收购摩托罗拉移动、惠普放弃PC与webOS,这两大事件冲击了整个IT业界,尤其谷歌对摩托罗拉移动的收购更是引起了多方注意。天下赢家 尽管谷歌CEO拉里佩奇曾明确表示,收购的主要目的,是在专利上对抗微软和苹果公司,更好地保护Android系统。天下赢家 但谷歌从原来单纯的手机系统开发者变为制造者,这一变化本身让Android内部的竞争环境发生了异变。天下赢家 一旦谷歌开始向子
13、公司摩托罗拉移动倾斜,甚至像苹果公司OS系统一样,将Android系统转变为封闭系统,单独经营。天下赢家 这对于其它Android阵营厂商来说,将是一场灾难。天下赢家 飞象网总裁项立刚也表示,谷歌收购摩托罗拉移动对业内冲击非常大,而冲击最大的是三星和HTC。天下赢家 因为其他企业规模比较小,能力比较弱,既然没有能力做操作系统就专心做Android设备生产商,但于实力很强的三星而言,滋味不是很好,虽然谷歌承诺会公平对待,但难免会将新东西优待摩托罗拉,所以三星需要谋求新的出路。天下赢家 当然,对于安卓,三星暂时也难以割舍。天下赢家 大力发展Bada系统的同时,三星也没有放松在安卓市场上的攻势。天下
14、赢家 近日,在柏林举行的国际消费电子展上,三星宣布推出7.7英寸Galaxy Tab平板计算机和5.3英寸Galaxy Note智能手机。天下赢家 “喜新不厌旧”,三星采用的是多线作战的策略。天下赢家 (3)战略转移路途漫长虽然担忧Android系统的不确定性,但目前Android占据全球智能手机市场超过53%的份额,对于三星来说,也许较难立即放弃Android。天下赢家 于是,不放安卓,发力Bada,示好微软,三星选择了一条多元发展之路。天下赢家 这一方面可以让三星的发展有了更多的可能性;另一方面,也让过分依赖安卓所带来的风险得以降低,避免将鸡蛋放在同一个篮子里。天下赢家 尽管选择多多,但问
15、题也同样存在。天下赢家 三星目前在智能手机市场所取得的最大成就还得归功于安卓,Bada尚不成熟,Bada 系统目前主要被三星应用于一些低端机型,比如Wave系列手机。天下赢家 但在目前来看,三星的Bada产品在市场上的表现并未达到预期。天下赢家 更有分析认为,在三星手机主力产品均采用 Android系统后,Bada系统的境况似乎有些像鸡肋。天下赢家 至于微软WP等其他系统领域,目前都还在成长过程中,即便三星有意发展,也需要冒一定的风险,并经历一定的考验。天下赢家 此外,因为三星的多操作系统平台势必会加大三星对研发和生产成本的投入,三星也需要考虑到这个问题,并在摸索的过程中不断作出调整和取舍。天
16、下赢家 总而言之,谷歌与摩托罗拉的联姻,让安卓阵营顿生变数。天下赢家 谷歌同时担当运动员与裁判员,难免会让人担心其对“近亲”摩托罗拉过分偏爱,如此情形下,其他安卓厂商另寻出路也在情理之中。天下赢家 但无论是三星“自产自销”的Bada系统,还是目前在市场上呼声甚高的微软WP系统,抑或是传闻不断的惠普webOS系统,目前都还难堪大任。天下赢家 因此,三星转移安卓风险的战略,也将是一个漫长的过程。天下赢家 至少在当下,三星仍需要依托安卓,逐渐发展其他操作系统,以便能够实现智能手机产品布局调整的平稳过渡。第二章 技术分析1bada环境构建1.1.安装步骤1.2启用程序设置工作空间:2.第一个 Hell
17、oworld Bada 程序2.1 File=New=bada Application Project2.2 .新建 Project,命名为 HelloWorld ,然后 Finish2.3 之后会生成一个工程文件,如下Includes是一个虚拟的文件夹,是bada运行的库。/inc,/src文件夹存放项目的C+源码 .h文件放在/inc文件夹,.cpp放在/src文件夹。/Home文件夹这个程序的文件系统(类似linux的home目录),比如文件的创建,读写等。/Icons文件夹存放项目使用到的图标,比如一些默认的程序启动图标,我们可以创建自己的图标去替换。/Res文件夹存放应用程序使用到的
18、资源文件,如UI视图文件。当应用程序安装到手机上也会在手机上创建/Icons,/Home,/Res文件夹,但/Icon,/Res中的内容是只读的,/Home文件夹中的是可读,可写的,但权限为此应用软件。还有两个重要的文件application.xml,manifest.xmlapplication.xml声明了应用程序的程序名,描述,版本号,用到的Icon资源等。manifest.xml声明了应用程序的属性如Key, ID,CPU 类型,heap大小,屏幕大小,传感器的使用等权限需要的声明。2.4 Build 工程:Project=Build Project这时观察项目项目,发现会生成几个文件
19、,如Res文件夹下的UI的xml文件,根目录下HelloWord.htb和signature.xml文件。2.5 创建结束之后使用模拟器运行:Run=Run As=bada Simulator Application2.6 启动模拟器3.helloworld详细分析展开项目视图:展开/inc,/src目录,我们看到对应的.h,.cpp文件,还有个很特别的HelloWorldEntry.cpp,这个就是HelloeWorld程序的入口了有个int OspMain(int argc, char *pArgv)的方法,找到这句:r = Osp:App:Application:Execute(Hell
20、oWorld:CreateInstance, pArgs);Excute前一个参数传的是ApplicationInstanceFactory对象,由HelloWorld类产生。我们再打开HelloWorld的cpp文件HelloWorld:CreateInstance(void)/ Create the instance through the constructor.return new HelloWorld();HelloWorld继承Osp:App:Application这个类,所以Main方法中Execute实例化这个对象。我们打开HelloWorld.h文件:会看到一系列的生命周期函
21、数,可以类比android的Activity类。实例化HelloWorld对象会首先调用其HelloWorld:OnAppInitializing(AppRegistry& appRegistry)方法。我们可以使用AppLog(HelloWorld init.)进行日志输出;其它函数:OnAppTerminating:应用程序终止的时候调用。OnForeground :应用程序前台显示的时候调用。OnBackground :应用程序转入后台的时候调用。OnLowMemory :内存不足的时候调用,如释放资源或者关闭应用程序。OnBatteryLevelChanged:电量不足调用,如关闭多媒
22、体(拍照,播放音频,视频等)。OnScreenOn :屏幕关闭调用,可恢复应用程序的数据。OnScreenOff : 屏幕关闭调用,可保存应用程序的数据。在OnAppInitializing方法中,我们可以看到:在OnAppInitializing方法中,我们可以看到:我们看到的界面就是Form1这个类的实例,Form1继承Form类,打开Form1.cpp,我们在OnInitializing方法中看到我们期待的Button了,图实例化Button,添加响应事件_pButtonOk-AddActionEventListener(*this);第三章 总体设计1. 系统分析1.1 系统可行性分析
23、时间计算器为用户提供方便的计算时间差功能,即在使用方便的前提下为用户提供尽量多的计算以及相关功能。意旨将计算时差和手机进行有机的结合,使其的使用变得更加简便。1. 经济可行性分析本系统完全开源,在本系统开发的过程中考虑了用户可能需要的计算时差功能,进行了简单的开发,功能尚不完善,但可以免费使用,很实惠,有很强的实用性。2.技术可行性分析本系统从技术上来讲是完全可行的,利用bada开发环境可以相对容易的实现基于触屏的手机软件开发,同时利用了C+的特点,使手机本身的CPU和存储空间完全可以支持系统的运算所需要的速度和存储空间。1.2 系统功能分析本程序可以实现简单的计算时间差,同时可以选择年,月,
24、日,以及精确到时,分。2 系统设计2.1 系统的总体思想 本程序是基于daba SDK1.2.1平台开发,在初期,我们系统的学习了一些bada应用开发中所设计到的知识,了解了开发bada应用是用C+语言。其后,我们对helloworld这一最基本的程序进行了详细的解析,并从中了解了开发方法和原理,最后用C+的思想总结出了这个程序的算法和数据结构,最后得以实现。2.2 程序流程图系统通过Form来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,最后计算出最终结果并显示在显示区。 按照输入进行计算开始监听用户输入并显示输出结果2.3 系统框图总体系统显示模块
25、输入模块计算模块2.4 各模块详解2.4.1 输入模块 我们用bada自带的图形编辑器加入了Button,并给每个Button加了event handler,以下是输入后获取时间的代码:/获取开始的时间DateTime dt1;EditDate* pEditDate1 = static_cast(GetControl(LIDC_EDITDATE1);EditTime* pEditTime1 = static_cast(GetControl(LIDC_EDITTIME1);dt1.AddYears(pEditDate1-GetYear();dt1.AddMonths(pEditDate1-Get
26、Month();dt1.AddDays(pEditDate1-GetDay();dt1.AddHours(pEditTime1-GetHour();dt1.AddMinutes(pEditTime1-GetMinute();dt1.AddSeconds(0);AppLog(%d,%d,dt1.GetHour(),dt1.GetMinute();/获取结束时间DateTime dt2;EditDate* pEditDate2 = static_cast(GetControl(LIDC_EDITDATE2);EditTime* pEditTime2 = static_cast(GetControl
27、(LIDC_EDITTIME2);dt2.AddYears(pEditDate2-GetYear();dt2.AddMonths(pEditDate2-GetMonth();dt2.AddDays(pEditDate2-GetDay();dt2.AddHours(pEditTime2-GetHour();dt2.AddMinutes(pEditTime2-GetMinute();dt2.AddSeconds(0);AppLog(%d,%d,dt2.GetHour(),dt2.GetMinute();2.4.2 显示模块 整体布局进行了排版,让计算结果在最下方显示。修改了程序图标和启动画面,更具
28、有DIY风格2.4.3 计算模块程序要完成计算功能,那么计算模块就是整个系统的重点模块。没有计算模块系统就不能顺利的完成计算,就无法达到用户的要求。所以计算模块的设计也是本次程序设计中的重点。下面是实现计算功能的代码:TimeSpan tspanStart = dt1.GetTime();TimeSpan tspanEnd = dt2.GetTime();if(tspanStart= tspanEnd.GetSeconds() second = tspanStart.GetSeconds() - tspanEnd.GetSeconds();if (tspanStart.GetMinutes()
29、 = tspanEnd.GetMinutes() minute = tspanStart.GetMinutes() - tspanEnd.GetMinutes();if(tspanStart.GetHours() = tspanEnd.GetHours()hour = tspanStart.GetHours() - tspanEnd.GetHours();day = tspanStart.GetDays() - tspanEnd.GetDays(); else hour = tspanStart.GetHours() - tspanEnd.GetHours() + 24;day = tspan
30、Start.GetDays() - tspanEnd.GetDays() - 1; else minute = tspanStart.GetMinutes() - tspanEnd.GetMinutes() + 60;if(tspanStart.GetHours() = tspanEnd.GetHours()hour = tspanStart.GetHours() - tspanEnd.GetHours();day = tspanStart.GetDays() - tspanEnd.GetDays(); else hour = tspanStart.GetHours() - tspanEnd.
31、GetHours() + 24;day = tspanStart.GetDays() - tspanEnd.GetDays() - 1; else second = tspanStart.GetSeconds() - tspanEnd.GetSeconds() + 60;if (tspanStart.GetMinutes() = tspanEnd.GetMinutes() minute = tspanStart.GetMinutes() - tspanEnd.GetMinutes();if(tspanStart.GetHours() = tspanEnd.GetHours()hour = ts
32、panStart.GetHours() - tspanEnd.GetHours();day = tspanStart.GetDays() - tspanEnd.GetDays(); else hour = tspanStart.GetHours() - tspanEnd.GetHours() + 24;day = tspanStart.GetDays() - tspanEnd.GetDays() - 1; else minute = tspanStart.GetMinutes() - tspanEnd.GetMinutes() + 60;if(tspanStart.GetHours() = t
33、spanEnd.GetHours()hour = tspanStart.GetHours() -1 - tspanEnd.GetHours();day = tspanStart.GetDays() - tspanEnd.GetDays(); else hour = tspanStart.GetHours() -1 - tspanEnd.GetHours() + 24;day = tspanStart.GetDays() - tspanEnd.GetDays() - 1;/输出时差String reslut;reslut.Append(day);reslut.Append(L天);reslut.Append(hour);reslut.Append(L时);reslut.Append(minute);reslut.Append(L分);reslut.Append(second);reslut.Append(L秒);_pLabel = static_cast(GetControl(LIDC_LABEL4);/AppLog(reslut);_pLabel-SetText(reslut);this-RequestRedraw(true);3. 程序测试测试程序的计算能力,我们以1949-10-1到2012-6-1为例,测试小时和分钟的计算: