买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种STK菜单的实现方法、装置_北京握奇智能科技有限公司;北京握奇数据股份有限公司_201711139774.2 

申请/专利权人:北京握奇智能科技有限公司;北京握奇数据股份有限公司

申请日:2017-11-16

公开(公告)日:2024-03-29

公开(公告)号:CN109800038B

主分类号:G06F9/451

分类号:G06F9/451;G06F3/0482

优先权:

专利状态码:有效-授权

法律状态:2024.03.29#授权;2020.11.27#实质审查的生效;2019.05.24#公开

摘要:本发明公开了一种STK菜单的实现方法,包括预先根据菜单层级情况为菜单设置相应的编号,并为所有菜单设置一共用的Selectitem主动式命令函数,然后预设了接收到用户操作后需要执行的菜单分发步骤。所有菜单利用共用的Selectitem主动式命令进行菜单展示,能减小代码空间,同时统一调用Selectitem其返回结果位于一处,便于处理接收的用户操作,进行统一菜单分发操作。当接收用户操作菜单命令后,可将菜单层级转换为菜单编号,然后逆向计算出当前执行的菜单,以进行菜单分发。本发明各菜单通过设计的编号规则联系起来,不再是相互独立的,菜单级别及回退机制更清晰。本发明还公开了一种STK菜单的实现装置。

主权项:1.一种STK菜单的实现方法,其特征在于,包括以下步骤:按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联;为所有菜单设置一共用的Selectitem主动式命令函数;预设与用户操作相应的菜单分发步骤,利用所述预定义规则逆向计算出要执行的菜单编号,然后进行菜单分发;其中,对STK中各菜单进行编号的预定义规则包括:依据STK菜单级别数量预设用于进行菜单编号的字节数量,每级菜单使用半个字节;确定从哪级菜单开始为其分配半字节,同时为分配的该半个字节设置值,然后为后续级别菜单分配剩下的字节,包括由已设置的半个字节开始,从左往右进行设置,下级菜单所占半字节的值为按菜单结构从上到下开始递增的项目标识;同时继承上级菜单设置好的半字节值;根据所述预定义规则逆向计算出要执行的菜单编号的方法包括:当接收的用户操作为菜单回退申请时,将备份的上级菜单编号设置为要执行的菜单;或者,当接收的用户操作为选择进入下级菜单时,将当前执行的菜单设置为上一级菜单,记录下拟进入的下级菜单的项目标识;当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目N,将所述下级菜单的项目标识往左移动N个半字节,再加上上一级菜单的编号,得到需要执行的菜单编号,其中N为大于等于0的整数。

全文数据:一种STK菜单的实现方法、装置技术领域本发明属于电信智能卡领域,具体涉及一种STK菜单的实现方法和装置。背景技术智能移动终端由于具有功能强大、可扩展性强、能方便的安装第三方软件等优点,越来越受到人们的重视。随着智能移动终端技术的发展,应用于智能移动终端的操作系统也越来越成熟。作为智能移动终端软件的重要组成部分,STKSIMToolKit,用户识别应用发展工具菜单承担着用户识别模块SIM卡内置的应用程序与用户的交换、部分无线功能的实现、以及业务定制与申请等任务更详细的说明可参考GSM11.14,SIM卡应用技术规范。由于SIM卡内置的应用程序能够给运营商带来较大的利润空间,并且还可以为用户带来使用上的方便,因此STK菜单成为智能移动终端研究者们重点研究的对象。现有开发的菜单方案多数是按照菜单结构层层嵌入的方式,好一点的会将各级菜单打平,但每级菜单还会独立处理,且回退机制较复杂,结构不够简洁,代码比较冗余,占空间较大,同时开发周期比较长,测试问题比较多,不利于空间压缩和后期维护。发明内容针对现有技术中存在的缺陷,本发明的目的是提供一种STK菜单的实现方法和装置,使得该STK菜单级别及回退机制更清晰,占用空间更小,还能降低故障率以及开发、测试成本。为达到以上目的,本发明采用的技术方案是:一种STK菜单的实现方法,包括:按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联;为所有菜单设置一共用的Selectitem主动式命令函数;预设与用户操作相应的菜单分发步骤,利用所述预定义规则逆向计算出要执行的菜单编号,然后进行菜单分发。进一步的,对STK中各菜单进行编号的预定义规则包括:依据STK菜单级别数量预设用于进行菜单编号caseid的字节数量,每级菜单使用半个字节;确定从哪级菜单开始为其分配半字节,同时为分配的该半个字节设置值,然后为后续级别菜单分配剩下的字节,包括由所述已设置的半个字节开始,从左往右进行设置,下级菜单所占半字节的值为按菜单结构从上到下开始递增的项目标识itemid,同时继承上级菜单设置好的半字节值;根据所述预定义规则逆向计算出要执行的菜单编号的方法包括:当接收的用户操作为菜单回退申请时,将备份的上级菜单编号设置为要执行的菜单;或者,当接收的用户操作为选择进入下级菜单时,将当前执行的菜单设置为上一级菜单,记录下拟进入的下级菜单的项目标识itemid;当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目N,将所述下级菜单的项目标识往左移动N个半字节,再加上上一级菜单的编号,得到需要执行的菜单编号,其中N为大于等于0的整数。进一步的,在对STK中各菜单进行编号前,先将菜单字符转换成字节码存入菜单buffer,buffer命名按菜单级别定义。进一步的,各菜单的编号使用宏定义,宏的名字与其触发菜单的buffer一一对应。进一步的,所述项目标识的值从1开始设置。另一方面,本发明还公开了一种STK菜单的实现装置,包括:菜单编号模块,用于按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联;统一调用Selectitem模块,用于为所有菜单设置一共用的Selectitem主动式命令函数;菜单分发模块,用于预设与用户操作相应的菜单分发步骤,利用所述预定义规则逆向计算出要执行的菜单编号,然后进行菜单分发。本发明的效果在于:预先根据菜单层级情况为菜单设置了相应的编号,并为所有菜单设置一共用的Selectitem主动式命令函数,用于展示菜单,然后预设了接收到用户操作后需要执行的菜单分发步骤。在实际操作时,所有菜单利用共用的Selectitem主动式命令进行菜单展示,能减小代码空间,同时统一调用Selectitem其返回结果位于一处,便于处理接收的用户操作,进行统一菜单分发操作。当接收用户操作菜单命令后,可将菜单层级转换为菜单编号,然后通过规则计算出当前执行的菜单,以进行菜单分发。本发明各菜单通过设计的编号规则联系起来,不再是相互独立的,菜单级别及回退机制更清晰。附图说明图1是在一些实施例中,一种STK菜单的实现方法的流程图。图2是在一些实施例中,一种STK菜单的操作的主流程图。图3是图2所示事例中,预设的与用户操作相应的菜单分发步骤的流程图。图4是在一些实施例中,一种STK菜单的实现装置的结构图。具体实施方式为了使本发明的目的、技术方案以及优点更加清楚明白,下面结合实施例进行进一步详细说明。应该理解的是,此实施例仅仅是本发明应用的一个方面,并不用于限定本发明。如图1所示,一种STK菜单的实现方法,包括以下步骤:S01,按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联。本发明希望将菜单层级转换为菜单编号,保证上级菜单与下级菜单存在关联,这样在进行菜单分发时可以通过将已定义的计算规则逆向计算出当前执行的菜单。菜单编号的方法较多,主要宗旨就是能实现菜单层级和菜单编号的方便、直接转换。本发明不限定具体的菜单编号方法,在本实施例中示出一种优选的菜单编号方法。比如:S101,依据STK菜单级别数量预设用于进行菜单编号caseid的字节数量,每级菜单使用半个字节。如果菜单级别少,使用1个字节即可,菜单级别很多,也可以考虑设置4个字节,但按目前菜单架构,一般2个字节就够用了。S102,确定从哪级菜单开始为其分配半字节,同时为分配的该半个字节设置值,然后为后续级别菜单分配剩下的字节,包括由所述已设置的半个字节开始,从左往右进行设置,下级菜单所占半字节的值为按菜单结构从上到下开始递增的项目标识itemid,同时继承上级菜单设置好的半字节值。表1表1定义了两个字节变量用于存储菜单编号的情况,用了3个半字节表示了4级菜单,其中,第一级菜单L0的子菜单分别L1-1、L1-2、L1-3;第二级菜单L1-1的子菜单分别为L2-11、L2-12、L2-13;第三级菜单L2-11的子菜单分别为L3-111、L3-112、L3-113。每级菜单括号里的数字即为对应的caseid,比如L3-111的caseid为0x111。对于本实施例,第一级菜单L0仅一个菜单,可作为入口,其caseid只要不与后续菜单重复即可,比如可设置为0或1等。但是由于设置成1会占用半个字节,有些浪费,因此建议将第一个菜单设置为0,其菜单编号为0x000。对于这种情况,实际上是从第二级菜单开始正式分配半字节用于进行菜单编号。若在另一些实施例中,第一级菜单有3个,则从第一级菜单开始分配半字节,编号分别为0x100、0x200、0x300。在本实施例中,从第二级菜单开始正式分配半字节用于菜单编号,因此L1-1的编号可设置为0x100,而其下一级菜单的编号的设置要同时依据两个条件:1按菜单结构从上到下开始递增的项目标识itemid;2继承上级菜单设置好的半字节值。比如,下级菜单中,第一个子菜单的项目标识itemid设置为1,则第二个子菜单的itemid一般设置为2,以此类推。上级菜单的编号为0x100,则第一个子菜单编号为在上级菜单的半个字节值的右边的半个字节设置1,得到0x110。按照此方法,可以得到如表1所示各下级菜单的编号。至此,就将菜单的级别转成菜单编号了,可以通过编号清楚了解菜单结构。在另一些实施例中,在对STK中各菜单进行编号前,先将菜单字符转换成字节码存入菜单buffer,buffer命名按菜单级别定义,这样可读性更高,一看buffer名就知道处理的是哪级菜单,确保编号的准确性。另外,各菜单的编号可以使用宏定义,宏的名字与其触发菜单的buffer一一对应。比如:点击L0后显示L1级菜单,点击L0后对应处理的caseid宏假如定义为ITEM0=0x000,那存储一级菜单的buffer可相应的定义为ITME0_buf,这样写代码时,不用一个一个去找对应的菜单buffer名字,根据提前定义好的规则,直接编写代码即可。比如L1-3处理的caseid宏定义为ITEM3,那存储L2-31和L2-32菜单字节码的buffer名定义为ITEM3_buf,Level2-31处理的caseid宏定义为ITEM31,那存储Level2-311和Level2-312菜单字节码的buffer名定义为ITEM31_buf,以此类推。S02,为所有菜单设置一共用的Selectitem主动式命令函数。所有菜单利用共用的Selectitem主动式命令进行菜单展示,能减小代码空间,同时统一调用Selectitem其返回结果位于一处,便于处理接收的用户操作,进行统一菜单分发操作。S03,预设与用户操作相应的菜单分发步骤,S01的编号规则逆向计算出要执行的菜单编号。与S01中的具体实施例对应,根据S01中的编号规则逆向计算要执行的菜单编号的方法包括:当接收的用户操作为菜单回退申请时,将备份的上级菜单编号设置为要执行的菜单;或者,当接收的用户操作为选择进入下级菜单时,将当前执行的菜单设置为上一级菜单,记录下拟进入的下级菜单的项目标识itemid;当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目N,将所述下级菜单的项目标识往左移动N个半字节,再加上上一级菜单的编号,得到需要执行的菜单编号,其中N为大于等于0的整数。现在以接收的用户操作为选择进入下级菜单时的菜单编号计算方法为例做详细说明。步骤1:将当前执行的菜单设置为上一级菜单,并记录下拟进入的下级菜单的项目标识itemid。又如表1所示,比如,当前执行的菜单为L1-10x100,拟进入的下一级菜单为L2-12,则将L1-10x100设置为上一级菜单,记录下拟进入的下级菜单的项目标识2。步骤2:当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目1,将所述下级菜单的项目标识2往左移动1个半字节得到0x20,然后再加上上一级菜单的编号0x100,就得到了需要执行的菜单编号0x120。可以理解的,若上级菜单为L2-110x110,拟进入的下级菜单的项目标识为3,将所述下级菜单的项目标识3无需向左移动,直接将所述下级菜单的项目标识加上上一级菜单的编号,得到需要执行的菜单编号0x113,则确定需要进入L3-113。可以理解的,在实际操作中,还会接收用户点击的退出,或执行异常,此时退出应用。现结合代码对本发明步骤S02、S03做些说明:菜单入口函数使用while进行循环判断,内部用switchcase语句进行各级菜单打平分发处理,分发后各case仅进行Selectitem主动式命令的变量初始化,然后退出switchcase,统一调用Selectitem,其返回值位于一处,能统一进行菜单编号转换,实现菜单分发。Selectitem主动式命令、项目标识itemid,itemidentifier等内容的含义、用法可参加GSM11.14,SIM卡应用技术规范。现结合图2、图3再做一些说明。图2为STK菜单的操作时的主流程图。由菜单应用入口进入后,设置菜单编号为入口菜单编号,如ITEM0L0的编号,即让sim卡先显示L0菜单。然后判断菜单的执行情况,包括1已执行完2回退操作3进入下一级菜单。对于第一种情况,直接结束应用,对于后两种情况就要计算要执行的菜单编号,统一进行菜单的分发。计算要执行菜单编号的方法可参见图3。本发明预先根据菜单层级情况为菜单设置了相应的编号,并为所有菜单设置一共用的Selectitem主动式命令函数,用于展示菜单,然后预设了接收到用户操作后需要执行的菜单分发步骤。在实际操作时,所有菜单利用共用的Selectitem主动式命令进行菜单展示,能减小代码空间,同时统一调用Selectitem其返回结果位于一处,便于处理接收的用户操作,进行统一菜单分发操作。当接收用户操作菜单命令后,可将菜单层级转换为菜单编号,然后通过规则计算出当前执行的菜单,以进行菜单分发。本发明各菜单通过设计的编号规则联系起来,不再是相互独立的,菜单级别及回退机制更清晰。相应的,本发明还包括一种STK菜单的实现装置,包括:菜单编号模块10,用于按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联。本发明希望将菜单层级转换为菜单编号,保证上级菜单与下级菜单存在关联,这样在进行菜单分发时可以通过将已定义的计算规则逆向计算出当前执行的菜单。菜单编号的方法较多,主要宗旨就是能实现菜单层级和菜单编号的方便、直接转换。本发明不限定具体的菜单编号方法,在本实施例中示出一种优选的菜单编号方法。比如:依据STK菜单级别数量预设用于进行菜单编号caseid的字节数量,每级菜单使用半个字节。如果菜单级别少,使用1个字节即可,菜单级别很多,也可以考虑设置4个字节,但按目前菜单架构,一般2个字节就够用了。确定从哪级菜单开始为其分配半字节,同时为分配的该半个字节设置值,然后为后续级别菜单分配剩下的字节,包括由所述已设置的半个字节开始,从左往右进行设置,下级菜单所占半字节的值为按菜单结构从上到下开始递增的项目标识itemid,同时继承上级菜单设置好的半字节值。统一调用Selectitem模块20,用于为所有菜单设置一共用的Selectitem主动式命令函数。所有菜单利用共用的Selectitem主动式命令进行菜单展示,能减小代码空间,同时统一调用Selectitem其返回结果位于一处,便于处理接收的用户操作,进行统一菜单分发操作。菜单分发模块30,用于预设与用户操作相应的菜单分发步骤,利用所述预定义规则逆向计算出要执行的菜单编号,然后进行菜单分发。用户操作包括菜单回退、进入下级菜单等。与菜单编号模块10的编号规则对应,利用所述预定义规则逆向计算出要执行的菜单编号的方法包括:当接收的用户操作为菜单回退申请时,将备份的上级菜单编号设置为要执行的菜单;当接收的用户操作为选择进入下级菜单时,将当前执行的菜单设置为上一级菜单,记录下拟进入的下级菜单的项目标识itemid;当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目N,将所述下级菜单的项目标识往左移动N个半字节,再加上上一级菜单的编号,得到需要执行的菜单编号,其中N为大于等于0的整数。在另一些实施例中,本发明的STK菜单的实现装置还包括字符转换模块,用于在对STK中各菜单进行编号前,先将菜单字符转换成字节码存入菜单buffer,buffer命名按菜单级别定义,这样可读性更高,一看buffer名就知道处理的是哪级菜单,确保编号的准确性。另外,菜单编号模块10还用于将各菜单的编号可以使用宏定义,宏的名字与其触发菜单的buffer一一对应。各模块具体的工作方法实施例参见前述一种STK菜单的实现方法的各实施例,在此不再赘述。本领域技术人员应该明白,本发明所述的方法和系统并不限于具体实施方式中所述的实施例,上面的具体描述只是为了解释本发明的目的,并非用于限制本发明。本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围,本发明的保护范围由权利要求及其等同物限定。

权利要求:1.一种STK菜单的实现方法,其特征在于,包括以下步骤:按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联;为所有菜单设置一共用的Selectitem主动式命令函数;预设与用户操作相应的菜单分发步骤,利用所述预定义规则逆向计算出要执行的菜单编号,然后进行菜单分发。2.如权利要求1所述的实现方法,其特征在于,对STK中各菜单进行编号的预定义规则包括:依据STK菜单级别数量预设用于进行菜单编号的字节数量,每级菜单使用半个字节;确定从哪级菜单开始为其分配半字节,同时为分配的该半个字节设置值,然后为后续级别菜单分配剩下的字节,包括由所述已设置的半个字节开始,从左往右进行设置,下级菜单所占半字节的值为按菜单结构从上到下开始递增的项目标识;同时继承上级菜单设置好的半字节值;根据所述预定义规则逆向计算出要执行的菜单编号的方法包括:当接收的用户操作为菜单回退申请时,将备份的上级菜单编号设置为要执行的菜单;或者,当接收的用户操作为选择进入下级菜单时,将当前执行的菜单设置为上一级菜单,记录下拟进入的下级菜单的项目标识;当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目N,将所述下级菜单的项目标识往左移动N个半字节,再加上上一级菜单的编号,得到需要执行的菜单编号,其中N为大于等于0的整数。3.如权利要求1所述的实现方法,其特征在于,在对STK中各菜单进行编号前,先将菜单字符转换成字节码存入菜单buffer,buffer命名按菜单级别定义。4.如权利要求3所述的实现方法,其特征在于,各菜单的编号使用宏定义,宏的名字与其触发菜单的buffer一一对应。5.如权利要求1所述的实现方法,其特征在于,所述项目标识的值从1开始设置。6.一种STK菜单的实现装置,其特征在于,包括:菜单编号模块,用于按预定义规则对STK中各菜单进行编号,保证上级菜单与下级菜单存在关联;统一调用Selectitem模块,用于为所有菜单设置一共用的Selectitem主动式命令函数;菜单分发模块,用于预设与用户操作相应的菜单分发步骤,利用所述预定义规则逆向计算出要执行的菜单编号,然后进行菜单分发。7.如权利要求6所述的实现装置,其特征在于,所述菜单编号模块对STK中各菜单进行编号的预定义规则包括:依据STK菜单级别数量预设用于进行菜单编号的字节数量,每级菜单使用半个字节;确定从哪级菜单开始为其分配半字节,同时为分配的该半个字节设置值,然后为后续级别菜单分配剩下的字节,包括由所述已设置的半个字节开始,从左往右进行设置,下级菜单所占半字节的值为按菜单结构从上到下开始递增的项目标识;同时继承上级菜单设置好的半字节值;所述菜单分发模块根据所述预定义规则逆向计算出要执行的菜单编号的方法包括:当接收的用户操作为菜单回退申请时,将备份的上级菜单编号设置为要执行的菜单;或者,当接收的用户操作为选择进入下级菜单时,将当前执行的菜单设置为上一级菜单,记录下拟进入的下级菜单的项目标识;当从上一级菜单编号的最左边开始往右检测到数值为0的半字节时,记录下该半字节右侧的半字节数目N,将所述下级菜单的项目标识往左移动N个半字节,再加上上一级菜单的编号,得到需要执行的菜单编号,其中N为大于等于0的整数。8.如权利要求6所述的实现装置,其特征在于,所述实现装置还包括字符转换模块,用于在对STK中各菜单进行编号前,先将菜单字符转换成字节码存入菜单buffer,buffer命名按菜单级别定义。9.如权利要求8所述的实现装置,其特征在于,所述菜单编号模块还用于将各菜单的编号使用宏定义,宏的名字与其触发菜单的buffer一一对应。10.如权利要求6所述的实现装置,其特征在于,所述项目标识的值从1开始设置。

百度查询: 北京握奇智能科技有限公司;北京握奇数据股份有限公司 一种STK菜单的实现方法、装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。