论文部分内容阅读
摘要:本文介绍了Android与其他主流智能手机平台的技术特点,给出了Android较于其他平台所具备的优势,详细分析了Android的架构及内部的工作机制,根据手机双屏显示技术的发展及现有技术存在的问题,结合Android平台的功能特点,在Android原有窗口管理系统的基础上,提出了Android平台下双屏幕切换显示的解决方案。
关键词:andriod;双屏幕;切换;实现
中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2011) 21-0000-02
Dual Switch Design Shows under Android Platform
Zhang Min,Zhang Jiandong
(Jiangxi University of Science and Technology,Applied Sciences,Ganzhou 341000,China)
Abstract:This paper describes the Android smartphone platform with the other major technical characteristics,gives the Android platform over the other have the advantage of a detailed analysis of the Android framework and internal working mechanism,according to the mobile phone and dual-display technology the problems of existing technologies,combined with the Android platform features,the original window manager in the Android system is proposed based on the Android platform switching dual screen display solutions.
Keywords:Andriod;Dual screen;Switch;Achievement
一、前言
Android平台是由Google与开放手机联盟合作开发的一个完全开放的移动设备综合平台,其免费允许所有厂商和个人在其基础上进行开发。本课题的提出正是源于联想研究院基于Android平台的Beacon手机项目,本款手机采用独特的内外屏设计,用户可以将显示内容在内外屏之间进行切换显示,但Android平台目前仅支持单屏显示,还无法支持多个显示设备,因此基于项目需要需对Android平台的窗口管理系统进行功能扩展以支持双屏切换显示。
随着3G牌照的发放,3G业务的全面开放,3G已进入我们的生活。3G(3埘Generation)作为新一代的移动通信系统,将无线通信与国际互联网等多媒体通信相结合,能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议和电子商务等多种信息服务。
3G时代的到来使整个产业面临加速发展的新机遇,联想的Beacon手机正是在这样的背景下应运而生,为了充分发挥3G所带来的数据传输速率及传输质量的大幅提升,Beacon手机采用由Google和开放手机联盟合作开发的AndroidIn]平台,Android平台与现有的其他手机平台Symbian及Windows mobile相比,最大的特点就是其强大的网络功能,Google将其在网络方面的技术优势与Android进行深度结合,通过Android用户不仅可以在手机上进行网页浏览及视频电话,还可以使用Google提供的Google地图和街景服务等,给用户带来了一个全新的移动网络体验。
除此之外,联想充分发挥其在PC上的技术优势,将手机与PC进行完美融合,设计出的这款Beacon手机,除了具备简单的手机通信功能外,更强调其卓越的移动办公能力,其独特的翻盖式和全键盘设计,使得其翻盖后更像一个缩小的笔记本,通过外屏用户可以进行基本的手机通信,而手机掀开后,其内部的超大触摸屏和全键盘,使其看上去更像一款缩微的笔记本电脑,用户可以进行文本编辑,多媒体播放,网页浏览,电子邮件的编辑收发,以及进行视频会议等。
独特的双屏显示方式是Beacon手机的一大亮点,但同时对该手机的软件开发提出了挑战,目前Android平台只支持单个显示设备,为了实现手机的内外屏切换显示,需对Andriod的窗口管理系统进行功能扩展。
二、Android平台下双屏切换显示的设计
Android平台目前只支持单屏幕显示,还无法支持双屏切换显示,因此在对Android平台深入研究的基础上,提出了双屏切换显示的解决方案,通过对其原有窗口管理系统的功能扩展,使其在捕捉到切屏事件后,可以及时的完成屏幕的切换工作,并将所要显示的内容根据当前屏幕的分辨率进行适当的调整。
双屏切换显示方案的实施基于Android平台原有的窗口管理系统,窗121管理系统是控制位映像显示器与输入设备的系统软件,提供了现代图形用户界面所应具备的许多重要特性,不仅负责在不同的应用程序之间分配屏幕区域,同时还将来自于交互式设备的输入信息发送到特定的应用程序中。
窗口管理系统主要包括两个重要的组成部分:窗口管理器和底层窗121系统。窗口管理器提供了一组功能接口,用户可以直接与其进行交互,请求窗口管理器完成窗口的创建、调整等工作,而底层窗口系统作为底层的功能组件,与窗口相关的操作实质上是由底层窗口系统来完成的。
Android的窗口管理系统包括:窗口管理器(Window Manager)和底层窗口系统(Surface Flinger)。Android窗口管理系统结构图如上页图3.3所示,其中为实现双屏切换显示,在窗口管理器中新增窗口调整模块和切屏处理模块,在底层窗口系统中新增屏幕管理模块和双屏切换模块。
三、手机双屏切换显示的实现
上面对基于Android平台的双屏切换显示的解决方案进行了概要性的介绍,这里将详细阐述各模块中的具体实现。
(一)窗口管理器
Android窗口管理器与用户之间的交互采用事件驱动交互模型。事件驱动机制包括事件的产生、分发和处理等。事件驱动机制的根本在于事件产生和事件响应的异步本质。产生事件的对象只需将事件放到事件队列中,并不关心该事件最终是如何处理的:同样,事件响应对象也不需考虑事件的来源,而只需对接收到的事件进行响应即可。因此事件产生后,究竟如何传递,会引起什么样的过程来响应,是由管理事件的部件来决定的,对事件的产生者和响应者都是透明的。
窗口管理器持有一个代表每个窗口的Window State链表,窗口管理器通过对链表中所有Window State对象的操作实现窗口的管理。在进行窗口的调整时,窗口管理器会首先获取当前屏幕的分辨率,然后根据最新的屏幕尺寸进行屏幕的分配工作,其通过调用Window State链表中每个对象的computer FrameLw()函数计算每个窗口的可视边框。然后开始进行剪切域的计算。每个窗口在进行剪切之前,其剪切域的大小都是其窗口矩形区域的大小,在进行剪切时,由于窗口的显示区域不能超过其可视边框,所以其首先要与其可视边框进行求交操作,然后判断该窗口之上是否还覆盖有其他需要显示的窗口,如果存在这样的窗口,该窗口还需与所有这些窗口进行求差的计算。待所有窗口的剪切域计算完毕后,底层窗口系统根据各窗口的剪切域进行实际输出的剪切操作。
(二)Surface
Surface是Android窗口管理系统中一个十分重要的概念和线索,起到承上启下的关键作用。作为Android窗口管理系统客户端的窗口管理器(Window Manager)和作为服务器端的底层窗口系统(Surface Flinger)交互的桥梁就是Surface。
Surface代码分为两部分,—部分是由Java语言编写的Surface类,另一部分是由C++语言编写的Surface Composer Client类。Surface类是窗口管理器看到的Surface,而Surface Composer Client类是底层窗口系统看到的Surface,Surface类实际只是定义了一些功能接口供上层程序调用,而具体的实现则是在Surface Composer Client类中完成的。每当Surface对象创建时就有一个相应的Surface Composer Client对象被创建。当用户调用Surface中的功能接口时,Surface会首先通过Java的JNI(Java Native Interface)调用Surface composer client中的相应函数,然后Surface Composer Client会获取一个指向Surface Flinger的I Binder对象,之后通过这个I Binder对象就可以跨进程访问Surface Flinger的功能,交由Surface Flinger完成最终的操作处理。
(三)底层窗口系统(Surface Flinger)
Android的底层窗口系统(Surface Hinger)主要包括Surface Flinger Display Hardware和EGL Display Surface几部分。其中最重要的部分当属Surface Flinger,Surface Flinger在整个窗口管理系统中担任服务器端的角色,其不仅负责Surface的叠加合成及渲染工作,还负责对显示子系统的操作。在Surface Flinger中对显示予系统的操作就是通过对Display Hardware的操作实现的,因此对Sufface Flinger来说,Display Hardware就是显示设备,Surface Flinger通过与Display Hardware的交互实现其对显示予系统的控制功能。
Android的底层图形引擎采用了Frame Buffer驱动技术,但是Open OLES并不能直接对Frame Buffer进行读写操作,因此需根据EGL标准对Frame Buffer设备进行一定的封装,类EGL Display Surface的定义就是用于完成此任务。这个类提供了对Frame Buffer设备的所有描述以及用于EGL操作Frame Buffer设备的所有方法,其直接和Frame Buffer打交道,负责Frame Buffer的配置并将显存映射到用户内存空间,在其完成Frame Buffer的初始化工作后,Display Hardware在E6LDisplaySurface上会创建一个EGL Surface对象,实际相当于显示设备的旬柄,以后的显示输出工作就只需对这个句柄进行操作就可以了。
参考文献:
[l]Android document.
http://code.google.com/android/documentation.html
[2]Android open∞urce project.http://source.android.tom/documentation
[3]Symbian OS.http://en.wikipedia.org/Wikipedia.org/wiki/Symbian_OS
[4]Windows Mobile.
http:l/emwikipedia.org/Wikipedia.orgAviki/Windows_Mobile
[5]王同洋.嵌入式Linux中图形用户界面的研究与设计[J].嵌入式操作系统应用,2006
[6]舒国丽.嵌入式系统底层软件的研究与开发[D].中国科学院沈阳计算技术研究所硕士学位,2002
[作者简介]张敏(1981-),女,安徽庐江人,硕士,江西理工大学应用科学学院,讲师,研究方向:计算机应用技术;张建栋(1983-),男,甘肃兰州人,学士,江西理工大学,助教,长期从事本科院校实践、实验教学的管理工作且担任土木工程专业基础课程的教学工作。
关键词:andriod;双屏幕;切换;实现
中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2011) 21-0000-02
Dual Switch Design Shows under Android Platform
Zhang Min,Zhang Jiandong
(Jiangxi University of Science and Technology,Applied Sciences,Ganzhou 341000,China)
Abstract:This paper describes the Android smartphone platform with the other major technical characteristics,gives the Android platform over the other have the advantage of a detailed analysis of the Android framework and internal working mechanism,according to the mobile phone and dual-display technology the problems of existing technologies,combined with the Android platform features,the original window manager in the Android system is proposed based on the Android platform switching dual screen display solutions.
Keywords:Andriod;Dual screen;Switch;Achievement
一、前言
Android平台是由Google与开放手机联盟合作开发的一个完全开放的移动设备综合平台,其免费允许所有厂商和个人在其基础上进行开发。本课题的提出正是源于联想研究院基于Android平台的Beacon手机项目,本款手机采用独特的内外屏设计,用户可以将显示内容在内外屏之间进行切换显示,但Android平台目前仅支持单屏显示,还无法支持多个显示设备,因此基于项目需要需对Android平台的窗口管理系统进行功能扩展以支持双屏切换显示。
随着3G牌照的发放,3G业务的全面开放,3G已进入我们的生活。3G(3埘Generation)作为新一代的移动通信系统,将无线通信与国际互联网等多媒体通信相结合,能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议和电子商务等多种信息服务。
3G时代的到来使整个产业面临加速发展的新机遇,联想的Beacon手机正是在这样的背景下应运而生,为了充分发挥3G所带来的数据传输速率及传输质量的大幅提升,Beacon手机采用由Google和开放手机联盟合作开发的AndroidIn]平台,Android平台与现有的其他手机平台Symbian及Windows mobile相比,最大的特点就是其强大的网络功能,Google将其在网络方面的技术优势与Android进行深度结合,通过Android用户不仅可以在手机上进行网页浏览及视频电话,还可以使用Google提供的Google地图和街景服务等,给用户带来了一个全新的移动网络体验。
除此之外,联想充分发挥其在PC上的技术优势,将手机与PC进行完美融合,设计出的这款Beacon手机,除了具备简单的手机通信功能外,更强调其卓越的移动办公能力,其独特的翻盖式和全键盘设计,使得其翻盖后更像一个缩小的笔记本,通过外屏用户可以进行基本的手机通信,而手机掀开后,其内部的超大触摸屏和全键盘,使其看上去更像一款缩微的笔记本电脑,用户可以进行文本编辑,多媒体播放,网页浏览,电子邮件的编辑收发,以及进行视频会议等。
独特的双屏显示方式是Beacon手机的一大亮点,但同时对该手机的软件开发提出了挑战,目前Android平台只支持单个显示设备,为了实现手机的内外屏切换显示,需对Andriod的窗口管理系统进行功能扩展。
二、Android平台下双屏切换显示的设计
Android平台目前只支持单屏幕显示,还无法支持双屏切换显示,因此在对Android平台深入研究的基础上,提出了双屏切换显示的解决方案,通过对其原有窗口管理系统的功能扩展,使其在捕捉到切屏事件后,可以及时的完成屏幕的切换工作,并将所要显示的内容根据当前屏幕的分辨率进行适当的调整。
双屏切换显示方案的实施基于Android平台原有的窗口管理系统,窗121管理系统是控制位映像显示器与输入设备的系统软件,提供了现代图形用户界面所应具备的许多重要特性,不仅负责在不同的应用程序之间分配屏幕区域,同时还将来自于交互式设备的输入信息发送到特定的应用程序中。
窗口管理系统主要包括两个重要的组成部分:窗口管理器和底层窗121系统。窗口管理器提供了一组功能接口,用户可以直接与其进行交互,请求窗口管理器完成窗口的创建、调整等工作,而底层窗口系统作为底层的功能组件,与窗口相关的操作实质上是由底层窗口系统来完成的。
Android的窗口管理系统包括:窗口管理器(Window Manager)和底层窗口系统(Surface Flinger)。Android窗口管理系统结构图如上页图3.3所示,其中为实现双屏切换显示,在窗口管理器中新增窗口调整模块和切屏处理模块,在底层窗口系统中新增屏幕管理模块和双屏切换模块。
三、手机双屏切换显示的实现
上面对基于Android平台的双屏切换显示的解决方案进行了概要性的介绍,这里将详细阐述各模块中的具体实现。
(一)窗口管理器
Android窗口管理器与用户之间的交互采用事件驱动交互模型。事件驱动机制包括事件的产生、分发和处理等。事件驱动机制的根本在于事件产生和事件响应的异步本质。产生事件的对象只需将事件放到事件队列中,并不关心该事件最终是如何处理的:同样,事件响应对象也不需考虑事件的来源,而只需对接收到的事件进行响应即可。因此事件产生后,究竟如何传递,会引起什么样的过程来响应,是由管理事件的部件来决定的,对事件的产生者和响应者都是透明的。
窗口管理器持有一个代表每个窗口的Window State链表,窗口管理器通过对链表中所有Window State对象的操作实现窗口的管理。在进行窗口的调整时,窗口管理器会首先获取当前屏幕的分辨率,然后根据最新的屏幕尺寸进行屏幕的分配工作,其通过调用Window State链表中每个对象的computer FrameLw()函数计算每个窗口的可视边框。然后开始进行剪切域的计算。每个窗口在进行剪切之前,其剪切域的大小都是其窗口矩形区域的大小,在进行剪切时,由于窗口的显示区域不能超过其可视边框,所以其首先要与其可视边框进行求交操作,然后判断该窗口之上是否还覆盖有其他需要显示的窗口,如果存在这样的窗口,该窗口还需与所有这些窗口进行求差的计算。待所有窗口的剪切域计算完毕后,底层窗口系统根据各窗口的剪切域进行实际输出的剪切操作。
(二)Surface
Surface是Android窗口管理系统中一个十分重要的概念和线索,起到承上启下的关键作用。作为Android窗口管理系统客户端的窗口管理器(Window Manager)和作为服务器端的底层窗口系统(Surface Flinger)交互的桥梁就是Surface。
Surface代码分为两部分,—部分是由Java语言编写的Surface类,另一部分是由C++语言编写的Surface Composer Client类。Surface类是窗口管理器看到的Surface,而Surface Composer Client类是底层窗口系统看到的Surface,Surface类实际只是定义了一些功能接口供上层程序调用,而具体的实现则是在Surface Composer Client类中完成的。每当Surface对象创建时就有一个相应的Surface Composer Client对象被创建。当用户调用Surface中的功能接口时,Surface会首先通过Java的JNI(Java Native Interface)调用Surface composer client中的相应函数,然后Surface Composer Client会获取一个指向Surface Flinger的I Binder对象,之后通过这个I Binder对象就可以跨进程访问Surface Flinger的功能,交由Surface Flinger完成最终的操作处理。
(三)底层窗口系统(Surface Flinger)
Android的底层窗口系统(Surface Hinger)主要包括Surface Flinger Display Hardware和EGL Display Surface几部分。其中最重要的部分当属Surface Flinger,Surface Flinger在整个窗口管理系统中担任服务器端的角色,其不仅负责Surface的叠加合成及渲染工作,还负责对显示子系统的操作。在Surface Flinger中对显示予系统的操作就是通过对Display Hardware的操作实现的,因此对Sufface Flinger来说,Display Hardware就是显示设备,Surface Flinger通过与Display Hardware的交互实现其对显示予系统的控制功能。
Android的底层图形引擎采用了Frame Buffer驱动技术,但是Open OLES并不能直接对Frame Buffer进行读写操作,因此需根据EGL标准对Frame Buffer设备进行一定的封装,类EGL Display Surface的定义就是用于完成此任务。这个类提供了对Frame Buffer设备的所有描述以及用于EGL操作Frame Buffer设备的所有方法,其直接和Frame Buffer打交道,负责Frame Buffer的配置并将显存映射到用户内存空间,在其完成Frame Buffer的初始化工作后,Display Hardware在E6LDisplaySurface上会创建一个EGL Surface对象,实际相当于显示设备的旬柄,以后的显示输出工作就只需对这个句柄进行操作就可以了。
参考文献:
[l]Android document.
http://code.google.com/android/documentation.html
[2]Android open∞urce project.http://source.android.tom/documentation
[3]Symbian OS.http://en.wikipedia.org/Wikipedia.org/wiki/Symbian_OS
[4]Windows Mobile.
http:l/emwikipedia.org/Wikipedia.orgAviki/Windows_Mobile
[5]王同洋.嵌入式Linux中图形用户界面的研究与设计[J].嵌入式操作系统应用,2006
[6]舒国丽.嵌入式系统底层软件的研究与开发[D].中国科学院沈阳计算技术研究所硕士学位,2002
[作者简介]张敏(1981-),女,安徽庐江人,硕士,江西理工大学应用科学学院,讲师,研究方向:计算机应用技术;张建栋(1983-),男,甘肃兰州人,学士,江西理工大学,助教,长期从事本科院校实践、实验教学的管理工作且担任土木工程专业基础课程的教学工作。