《ANDROID平台兼容本地代码OPENGL程序的系统及方法.pdf》由会员分享,可在线阅读,更多相关《ANDROID平台兼容本地代码OPENGL程序的系统及方法.pdf(9页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104035768 A (43)申请公布日 2014.09.10 C N 1 0 4 0 3 5 7 6 8 A (21)申请号 201410238502.8 (22)申请日 2014.05.30 G06F 9/44(2006.01) (71)申请人四川长虹电器股份有限公司 地址 621000 四川省绵阳市高新区绵兴东路 35号 (72)发明人李熊发 张帆 陈锡林 胡军 王琴 唐骏 (74)专利代理机构四川省成都市天策商标专利 事务所 51213 代理人伍孝慈 (54) 发明名称 Android平台兼容本地代码OpenGL程序的系 统及方法 (57) 摘要 本发明公开。
2、了一种获取和传递Android应用 程序生命周期事件及管理OpenGL渲染环境,实现 Android平台兼容本地代码OpenGL程序的系统和 方法,所述系统包括:事件处理模块、本地前后台 管理模块及OpenGL环境管理模块。所述方法应用 于所述系统之上,所述方法包括:获取Android应 用程序生命周期相关事件,通过事件处理模块进 行事件封装,并传递给本地前后台管理模块对应 用程序生命周期进行同步管理;通过OpenGL环境 管理模块自动管理OpenGL环境,完成Android窗 体管理系统与本地OpenGL环境的无缝对接,解决 本地代码OpenGL程序绘制到Android系统Java 层窗体的。
3、技术问题;通过本地前后台管理模块, 自动对OpenGL环境进行控制,保证OpenGL渲染环 境的正确性;使用线程同步技术,确保Android系 统资源管理流程与OpenGL环境管理流程达到一 致。 (51)Int.Cl. 权利要求书1页 说明书5页 附图2页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书5页 附图2页 (10)申请公布号 CN 104035768 A CN 104035768 A 1/1页 2 1.一种获取和传递Android应用程序生命周期事件及管理OpenGL渲染环境,以实现 Android平台兼容本地代码OpenGL程序的系统,包括:。
4、事件处理模块、本地前后台管理模块 及OpenGL环境管理模块,其中, 事件处理模块,用于将获取到的事件封装成可供底层识别的数据格式,并将所述事件 数据保存到队列中等待所述本地前后台管理模块进行处理; 本地前后台管理模块,用于从所述事件处理模块获取事件数据,同步Android应用主 线程与OpenGL处理线程,并通知所述OpenGL环境管理模块进行相应处理; OpenGL环境管理模块,用于管理OpenGL环境相关的初始化、销毁以及资源的释放和重 新获取。 2.根据权利要求1所述的系统,其特征在于:所述事件处理模块获取Android应用程 序生命周期相关事件,通过所述事件处理模块进行事件封装,并传。
5、递给所述本地前后台管 理模块对应用程序生命周期进行同步管理。 3.根据权利要求1所述的系统,其特征在于:所述OpenGL环境管理模块自动管理 OpenGL环境相关的初始化、销毁、资源的释放及重新获取,所述OpenGL环境管理模块完成 Android窗体管理系统与本地OpenGL环境的无缝对接。 4.根据权利要求1所述的系统,其特征在于:在Android应用进行前后台切换时,所 述本地前后台管理模块自动对OpenGL环境进行控制,所述控制的方式至少包括绘图表面 (Surface)的创建和销毁、渲染的暂停和恢复。 5.根据权利要求1所述的系统,其特征在于:所述事件处理模块、所述本地前后台管理 模块。
6、及所述OpenGL环境管理模块使用线程同步技术。 6.根据权利要求1至5中任一权利要求所述的系统,其特征在于:所述事件处理模块、 所述本地前后台管理模块及所述OpenGL环境管理模块使用Java本地接口,作为Android Java层与本地代码交互的桥梁。 7.一种获取和传递Android应用程序生命周期事件及管理OpenGL渲染环境,实现 Android平台兼容本地代码OpenGL程序的方法,包括: 通过事件处理模块获取Android应用程序生命周期相关事件,并所述事件处理模块进 行事件封装后,传递给本地前后台管理模块对应用程序生命周期进行同步管理; 通过OpenGL环境管理模块自动管理Op。
7、enGL环境相关的初始化、销毁、资源的释放及重 新获取,所述OpenGL环境管理模块完成Android窗体管理系统与本地OpenGL环境的无缝 对接; 在Android应用程序进行前后台切换时,通过所述本地前后台管理模块,自动对 OpenGL环境进行控制,所述控制的方式至少包括绘图表面(Surface)的创建和销毁、渲染 的暂停和恢复。 8.根据权利要求7所述的方法,其特征在于:所述事件处理模块、所述本地前后台管理 模块及所述OpenGL环境管理模块使用线程同步技术。 9.根据权利要求7或8所述的方法,其特征在于:所述事件处理模块、所述本地前后台 管理模块及所述OpenGL环境管理模块使用Ja。
8、va本地接口,作为Android Java层与本地代 码交互的桥梁。 权 利 要 求 书CN 104035768 A 1/5页 3 Android 平台兼容本地代码 OpenGL 程序的系统及方法 技术领域 0001 本发明涉及计算机嵌入式领域,尤其涉及Android平台显示系统领域,更具体的 说,本发明涉及一种Android平台兼容本地代码OpenGL程序的系统和方法。 背景技术 0002 目前由Google公司推出的Android开发式操作系统自发布以来已经占据了大量 的市场份额,涉及的领域由手机延伸到智能电视、平板电脑、数码相机、游戏机等其他诸多 领域。由于Android系统的开放性与普。
9、及率,越来越多的开发者投入到Android应用的研发 工作中。已经在其他平台拥有成熟软件产品的公司也纷纷将其产品移植到Android平台, 以获得更多的用户。 0003 Android系统使用Java作为开发语言,由于Android系统的开放性,各个硬件厂商 对Android框架的底层实现各不相同,同样的代码在不同硬件平台上表现出来的效果也不 一样,这对开发工作造成一定的影响。并且Android系统升级更新相当频繁,Android系统 API(应用编程接口,英文Application Programming Interface,以下称API)可能变化、失 效、甚至被移除,这就造成软件产品的维护。
10、工作相当繁重。例如,针对不同的Android版本 都要推出不同的应用程序,增加了开发工作量;不同版本的应用程序需要部署到相应的平 台,增加了相关投入。 0004 OpenGL(开放式图形库,英文Open Graphics Library,以下称OpenGL)作为行业领 域中最为广泛接纳的2D/3D图形API,独立于操作系统,具有权威性和延续性。帮助开发者 实现高性能、极具冲击力的高视觉表现软件的开发。支持OpenGL软件具有很好的移植性, 所以获得非常广泛的应用。目前诸多成熟的软件产品都使用OpenGL,这些由本地代码(C、 C+)构建的软件产品就面临移植到Android平台对接Java接口以。
11、及Android窗体管理系 统的问题。如果使用本地代码与OpenGL的软件产品能快速应用到Android平台,则将降低 软件产品移植的开发工作,最大化利用技术储备,吸引开发者加入Android系统生态圈,扩 大产品的市场占有率。 0005 在现有技术中,发明申请“基于Android消息处理机制的视图切换系统及方法” 公开了一种基于Android消息处理机制的视图切换系统及方法,可以实现Android手机和 采用Android处理系统的手持设备的视图切换功能,满足用户对应用程序可视化效果的需 求,但不能实现Android平台兼容本地代码OpenGL程序的功能而达到简化移植的目的。 0006 另外。
12、,发明申请“在安卓系统下运行标准C程序的方法和装置”公开了一种解决C 程序移植困难的问题,但必须通过在Android系统中再搭建一个标准C库的工作环境,该发 明也不能实现Android平台兼容本地代码OpenGL程序的功能而达到简化移植的目的。 发明内容 0007 本发明的目的之一在于解决上述不足,提供一种获取和传递Android应用程序生 命周期事件及管理OpenGL渲染环境,实现Android平台兼容本地代码OpenGL程序的系统 说 明 书CN 104035768 A 2/5页 4 和方法,以达到简化移植的目的。 0008 为解决上述的技术问题,本发明采用以下技术方案: 0009 本发明。
13、一方面提供了一种获取和传递Android应用程序生命周期事件及管理 OpenGL渲染环境,以实现Android平台兼容本地代码OpenGL程序的系统,所述系统包括: 事件处理模块、本地前后台管理模块及OpenGL环境管理模块。其中, 0010 事件处理模块,用于将获取到的事件封装成可供底层识别的数据格式,并将该事 件数据保存到队列中等待本地前后台管理模块进行处理。 0011 本地前后台管理模块,用于从所述事件处理模块获取事件数据,同步Android应 用主线程与OpenGL处理线程,通知OpenGL环境管理模块进行相应处理。 0012 OpenGL环境管理模块,用于管理OpenGL环境相关的初。
14、始化、销毁以及资源的释放 和重新获取,降低本地代码OpenGL程序与Android窗体系统的耦合度。 0013 所述事件处理模块获取Android应用程序生命周期相关事件,通过所述事件处理 模块进行事件封装,并传递给所述本地前后台管理模块对应用程序生命周期进行同步管 理,实现了对生命周期相关事件的捕捉,并对事件数据进行封装以及将队列送入等待处理。 0014 所述OpenGL环境管理模块自动管理OpenGL环境相关的初始化、销毁、资源的释放 及重新获取,所述OpenGL环境管理模块完成Android窗体管理系统与本地OpenGL环境的 无缝对接,解决本地代码OpenGL程序绘制到Android系。
15、统Java层窗体的技术问题。 0015 在Android应用进行前后台切换时,通过所述本地前后台管理模块,自动对 OpenGL环境进行控制,所述控制的方式至少包括绘图表面(Surface)的创建和销毁、渲染 的暂停和恢复等,保证OpenGL渲染环境的正确性。 0016 所述事件处理模块、所述本地前后台管理模块及所述OpenGL环境管理模块中使 用线程同步技术,确保Android系统资源管理流程与OpenGL环境管理流程达到一致。 0017 所述事件处理模块、所述本地前后台管理模块及所述OpenGL环境管理模块使用 JNI(Java本地接口,英文Java Native Interface,以下称。
16、JNI)技术,作为Android Java层 与本地代码交互的桥梁,所述事件处理模块、所述本地前后台管理模块及所述OpenGL环境 管理模块完全代替开发者完成了Java与本地代码接口的相互转换。 0018 本发明另一方面提供了一种获取和传递Android应用程序生命周期事件及管理 OpenGL渲染环境,实现Android平台兼容本地代码OpenGL程序的方法,所述方法包括: 0019 通过事件处理模块获取Android应用程序生命周期相关事件,并通过所述事件处 理模块进行事件封装后,传递给本地前后台管理模块对应用程序生命周期进行同步管理, 实现了对生命周期相关事件的捕捉,并对事件数据进行封装以。
17、及将队列送入等待处理。 0020 通过OpenGL环境管理模块自动管理OpenGL环境相关的初始化、销毁、资源的释 放及重新获取,完成Android窗体管理系统与本地OpenGL环境的无缝对接,解决本地代码 OpenGL程序绘制到Android系统Java层窗体的技术问题。 0021 在Android应用程序进行前后台切换时,通过所述本地前后台管理模块,自动对 OpenGL环境进行控制,所述控制的方式至少包括绘图表面(Surface)的创建和销毁、渲染 的暂停和恢复等,保证OpenGL渲染环境的正确性。 0022 通过在所述事件处理模块、所述本地前后台管理模块及所述OpenGL环境管理模 块中。
18、使用线程同步技术,确保Android系统资源管理流程与OpenGL环境管理流程达到一 说 明 书CN 104035768 A 3/5页 5 致。 0023 所述事件处理模块、所述本地前后台管理模块及所述OpenGL环境管理模块使用 Java JNI技术,作为Android Java层与本地代码交互的桥梁,所述事件处理模块、所述本地 前后台管理模块及所述OpenGL环境管理模块完全代替开发者完成了Java与本地代码接口 的相互转换。 0024 本发明利用Java JNI连接C、C+本地代码与Android Java层API,配合系统中所 述事件处理模块、所述本地前后台管理模块及所述OpenGL环。
19、境管理模块完成数据交换与 生命周期处理,从而实现完善的Android应用功能。 0025 与现有技术相比,本发明的有益效果之一是:降低了本地代码软件产品与 Android系统Java接口及Android窗体管理系统的耦合度,达到了简化移植的目的。 附图说明 0026 图1为本发明实施例的系统结构框图; 0027 图2为本发明实施例的Android应用主线程处理流程图; 0028 图3为本发明实施例的应用程序前后台切换处理流程图; 0029 图4为本发明实施例的OpenGL初始化线程处理流程图。 具体实施方式 0030 下面结合附图和实施例对本发明作进一步阐述。 0031 本发明一个实施例提供了。
20、一种获取和传递Android应用程序生命周期事件及管 理OpenGL渲染环境,以实现Android平台兼容本地代码OpenGL程序的系统100。图1为本 发明实施例的系统结构框图,所述系统包括:事件处理模块101、本地前后台管理模块102、 OpenGL环境管理模块103。其中, 0032 事件处理模块101,用于将获取到的事件封装成可供底层识别的数据格式,并将该 事件数据保存到队列中等待本地前后台管理模块102进行处理。 0033 本地前后台管理模块102,用于从所述事件处理模块获取事件数据,同步Android 应用主线程与OpenGL处理线程,通知OpenGL环境管理模块103进行相应处理。
21、。 0034 OpenGL环境管理模块103,用于管理OpenGL环境相关的初始化、销毁以及资源的 释放和重新获取,降低本地代码OpenGL程序与Android窗体系统的耦合度。 0035 在本发明的另一实施例中,所述事件处理模块101获取Android应用程序生命周 期相关事件,并通过所述事件处理模块101进行事件封装后,传递给所述本地前后台管理 模块102对应用程序生命周期进行同步管理,实现了对生命周期相关事件的捕捉,并对事 件数据进行封装以及将队列送入等待处理。 0036 所述OpenGL环境管理模块103自动管理OpenGL环境相关的初始化、销毁、资源的 释放及重新获取,并完成Andr。
22、oid窗体管理系统与本地OpenGL环境的无缝对接,解决本地 代码OpenGL程序绘制到Android系统Java层窗体的技术问题。 0037 在Android应用进行前后台切换时,通过所述本地前后台管理模块102,自动对 OpenGL环境进行控制,所述控制的方式至少包括绘图表面(Surface)的创建和销毁、渲染 的暂停和恢复等,保证OpenGL渲染环境的正确性。 说 明 书CN 104035768 A 4/5页 6 0038 在所述事件处理模块101、所述本地前后台管理模块102及所述OpenGL环境管理 模块103中使用线程同步技术,确保Android系统资源管理流程与OpenGL环境管。
23、理流程达 到一致。 0039 所述事件处理模块101、所述本地前后台管理模块102及所述OpenGL环境管理 模块103使用JNI技术,作为Android Java层与本地代码交互的桥梁,所述事件处理模块 101、所述本地前后台管理模块102及所述OpenGL环境管理模块103完全代替开发者完成 了Java与本地代码接口的相互转换。 0040 另一方面,本发明的另一类型的实施例是一种获取和传递Android应用程序生命 周期事件及管理OpenGL渲染环境,实现Android平台兼容本地代码OpenGL程序的方法,所 述方法包括: 0041 通过所述事件处理模块101获取Android应用程序生。
24、命周期相关事件,并通过所 述事件处理模块101进行事件封装后,传递给所述本地前后台管理模块102对应用程序生 命周期进行同步管理,实现了对生命周期相关事件的捕捉,并对事件数据进行封装以及将 队列送入等待处理。 0042 通过所述OpenGL环境管理模块103自动管理OpenGL环境相关的初始化、销毁、资 源的释放及重新获取,并完成Android窗体管理系统与本地OpenGL环境的无缝对接,解决 本地代码OpenGL程序绘制到Android系统Java层窗体的技术问题。 0043 在Android应用程序进行前后台切换时,通过所述本地前后台管理模块102,自动 对OpenGL环境进行控制,所述控。
25、制的方式至少包括绘图表面(Surface)的创建和销毁、渲 染的暂停和恢复等,保证OpenGL渲染环境的正确性。 0044 通过在所述事件处理模块101、所述本地前后台管理模块102及所述OpenGL环境 管理模块103中使用线程同步技术,确保Android系统资源管理流程与OpenGL环境管理流 程达到一致。 0045 所述事件处理模块101、所述本地前后台管理模块102及所述OpenGL环境管理 模块103使用JNI技术,作为Android Java层与本地代码交互的桥梁,所述事件处理模块 101、所述本地前后台管理模块102及所述OpenGL环境管理模块103完全代替开发者完成 了Jav。
26、a与本地代码接口的相互转换。 0046 在本实施例中,当Android应用程序启动以后,将开辟线程同时进行两项任务,其 中, 0047 任务一是Android应用程序主线程,其步骤参考图2所示如下: 0048 步骤一,Android应用程序启动S101:创建Android窗体; 0049 步骤二,监视Android生命周期变化S102:Android主线程在创建窗体完成后即开 始监听来自Android系统各类生命周期相关的事件; 0050 步骤三,判断是否有生命周期变化事件S103:当收到事件后,将事件传递到事件 处理模块101,否则继续监听; 0051 步骤四,所述事件处理模块101将事件进。
27、行封装并等待处理S104:事件将被封装 成可供底层识别的数据格式,然后将经过封装的事件保存到队列中; 0052 步骤五,将事件分发到本地前后台管理模块102做相应处理S105:在OpenGL轮询 中,所述事件处理模块101将事件分发到所述本地前后台管理模块102,所述本地前后台管 说 明 书CN 104035768 A 5/5页 7 理模块102根据事件的类别,选择感兴趣的事件进行相应处理(参考图3所示): 0053 A:当应用程序从前台切换到后台时,挂起Android主线程,暂停OpenGL渲染,释放 OpenGL相关资源; 0054 B:当应用程序从后台切换到前台时,挂起Android主线。
28、程,重新获取OpenGL相关 资源,并恢复OpenGL渲染。 0055 步骤六,Android应用程序恢复处理流程S106:所述本地前后台管理模块102处理 完成后,恢复Android主线程中的应用程序处理流程,继续进行其他Android系统相关处理 工作。 0056 任务二是OpenGL处理线程,其步骤参考图4所示如下: 0057 步骤一,Android应用程序启动S201:创建Android窗体; 0058 步骤二,创建绘图线程,等待Android创建窗体绘图表面(Surface)S202:OpenGL 绘图线程创建后将等待Android创建窗体绘图表面(Surface); 0059 步骤。
29、三,判断Android窗体绘图表面(Surface)是否创建成功S203:当窗体绘图 表面(Surface)创建成功则继续执行,否则一直等待直至窗体绘图表面(Surface)创建成 功; 0060 步骤四,所述OpenGL环境管理模块103进行环境初始化S204:当窗体绘图表面 (Surface)创建成功后通知所述OpenGL环境管理模块103对OpenGL进行环境初始化,完成 绘图前的准备工作; 0061 步骤五,进入本地OpenGL程序处理循环S205:OpenGL环境初始化完成后即将控制 权交予本地OpenGL程序,本地OpenGL程序进入渲染循环,进行程序处理和图形渲染。 0062 通。
30、过上述步骤后,Android系统显示相关的工作将完全交由OpenGL本地代码管理 和控制,降低了本地代码软件产品与Android系统Java接口及Android窗体管理系统的耦 合度,达到了简化移植的目的。 0063 通过上述与现有技术的区别,使得本发明还具有如下特点:第一,采用跨语言交互 技术,允许Java代码和其他语言写的代码进行交互,实现了本地代码与Android Java的相 互调用;第二,采用数据封装与传递技术,Android系统获取到的生命周期相关事件,如前 后台切换、应用暂停、恢复事件等通过消息发送到本地代码层,再传入到本地程序框架中; 第三,采用线程同步技术,管理和控制Andr。
31、oid应用主线程与本地代码线程的同步问题,保 证了在Android应用程序的生命周期处理过程中本地代码正确地做出与之相对应的处理。 第四,采用OpenGL绘制环境管理技术,统一Android窗体管理系统与OpenGL绘图上下文环 境,确保OpenGL绘制环境的正确性。 0064 尽管这里参照本发明的一个解释性实施例对本发明进行了描述,但是,应该理解, 本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申 请公开的原则范围和精神之内。更具体地说,在本申请公开、附图和权利要求的范围内,可 以对主题组合布局的组成部件和/或布局进行多种变型和改进。除了对组成部件和/或布 局进行的变型和改进外,对于本领域技术人员来说,其他的用途也将是明显的。 说 明 书CN 104035768 A 1/2页 8 图1 图2 图3 说 明 书 附 图CN 104035768 A 2/2页 9 图4 说 明 书 附 图CN 104035768 A 。