CN104965709B - 一种基于Android内核的动态生成位图图像的信息显示方法 - Google Patents

一种基于Android内核的动态生成位图图像的信息显示方法 Download PDF

Info

Publication number
CN104965709B
CN104965709B CN201510382316.6A CN201510382316A CN104965709B CN 104965709 B CN104965709 B CN 104965709B CN 201510382316 A CN201510382316 A CN 201510382316A CN 104965709 B CN104965709 B CN 104965709B
Authority
CN
China
Prior art keywords
information
display
kernel
file
dynamic generation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201510382316.6A
Other languages
English (en)
Other versions
CN104965709A (zh
Inventor
谭毓安
孙宗文
张全新
程子敬
李元章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201510382316.6A priority Critical patent/CN104965709B/zh
Publication of CN104965709A publication Critical patent/CN104965709A/zh
Application granted granted Critical
Publication of CN104965709B publication Critical patent/CN104965709B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种基于Android内核的动态生成位图图像的信息显示方法,属于移动通讯系统信息技术领域。开发者通过对Android内核源码进行修改,可以扩展系统的功能或增强系统的安全性,有时需要将内核中的一些信息显示给用户,然而内核并无法直接与用户交互,开发者有时又不想或根本无法增加或修改上层应用。针对该问题,本发明利用系统已有的可以显示图像的程序,通过在内核虚拟文件系统中拦截应用对图片文件的读操作,在应用读取特定图片时,将内核中需要显示的信息动态生成位图图像返回给应用层,从而实现内核信息的显示。本发明在不修改或添加应用程序、不替换文件系统中的图片的情况下实现了内核信息向用户的展示,达到让用户了解相关设备当前状况的目的。

Description

一种基于Android内核的动态生成位图图像的信息显示方法
技术领域
本发明属于移动通讯系统信息技术领域,涉及一种基于Android内核的动态生成位图图像的信息显示方法。
背景技术
Android系统是谷歌公司为移动设备设计的软件平台和开放操作系统。它基于Linux2.6内核,包括操作系统、中间件堆栈、可定制的用户接口和应用程序。由于Android系统的开放性,手机厂商或第三方开发者可以对其内核源码进行修改,以实现系统功能的扩展或安全性的增强。其主要步骤包括:下载Android内核源码、对源码进行修改、编译得到内核镜像、将内核镜像刷入到手机等Android设备中。使用上述方式对Android系统进行修改后,经常会遇到一个问题,就是如何将内核的一些信息显示给用户。其中的主要难点是:和用户直接打交道的是上层应用程序,内核无法直接与用户交互;开发者不想或无法对上层应用程序进行修改或添加,从而实现内核信息的显示。
位图图像,也称作点阵图像,是由像素点组成的。BMP是位图文件的格式,它由文件头、位图信息头、颜色信息和图形数据四部分组成。其中文件头数据结构含有文件类型、文件大小和像素数据起始位置等信息。对于256色位图,每个像素点使用8位二进制数表示,这8位二进制表示的是颜色表中的一个颜色索引。颜色表用来描述位图中的颜色,它有若干个表项,每个表项代表一种颜色。
发明内容
本发明的目的是为解决上述问题,提出了一种基于Android内核的动态生成位图图像的信息显示方法。
本发明的原理如图1所示,利用系统已有的可以显示图像的程序,通过在内核虚拟文件系统中拦截应用对图片文件的读操作,在应用读取特定图片时,在内核中动态生成位图图像返回给应用层,从而实现内核信息的显示。
本发明的目的是通过以下技术方案实现的:
一种基于Android内核的动态生成位图图像的信息显示方法,包括如下四个步骤:
1.在系统中找到一个可以显示固定位图图像的应用程序,显示的原始图像不必是位图,但当把原始图像替换为位图图像后,应用程序仍能正常显示。记所显示的原始图像文件为F1,其路径为P;
2.根据需要显示信息的多少创建一个大小合适的位图文件,记为F2,然后使用WinHex软件或其他方法将F2的内容拷贝到一个unsigned char类型的字节数组中,记该字节数组为A,数组的长度即位图文件的大小,记为L;
3.在内核虚拟文件系统的vfs_read函数中,添加对路径P的拦截,当读取的文件路径为P时,返回位图字节数组A中的内容;此时,原来显示图像文件F1的上层应用程序显示的将是位图F2的内容;
4.内核需要显示信息时,根据位图文件的格式,将所需显示的信息写入到位图字节数组A中的数据区域。
作为优选,在每次写入数据前,先将位图数据进行擦除,初始化为单一的背景色。
在所述步骤2中,可以根据显示信息的不同,创建不同位深度的位图文件。位深越大,可以显示的颜色数越多,但是占用的内存也越大,显示信息所需的时间也越长。
在所述步骤3中,vfs_read是内核虚拟文件系统中用来读取文件内容的函数,其函数原型为ssize_t vfs_read(struct file*file,char__user*buf,size_t count,loff_t*pos),file参数是所读取的文件对象,可以根据该对象获得文件的路径,进而可以判断该路径是否为原始位图文件路径P。buf参数是用户态的缓冲区,读取的文件内容将写入这个缓冲区,从而传递给用户层的应用程序,count是读取长度,pos是读取的位置。根据pos和count可以得到读取的区域,对于该区域位于0~L之内的部分,则将A中相应的数据拷贝到buf中;对于不在0~L之内的部分,则buf相应的数据置为背景色或其他区别于显示信息字体的颜色所对应的数值。
作为优选,步骤四所述需要显示的信息包括文本信息,但不限于文本信息,原理上包括所有能用位图显示的信息。
作为优选,如果在所述步骤4中,需要显示的信息为文本信息,首先需要获得字符对应的由0和1组成的字形矩阵(其中0显示背景色,1显示字体颜色),根据字形矩阵,在位图字节数组A中的像素数据区域写入相应的颜色值。
有益效果
本发明在不修改或添加应用程序、不替换文件系统中的图片的情况下实现了内核信息向用户的展示,达到让用户了解相关设备当前状况的目的。
附图说明
图1为本发明方法的原理示意图;
图2为本发明实施例手表监管信息界面示意图;
图3为本发明实施例使用画图工具创建的显示位图F2的界面示意图;
图4为应用本发明实施例显示的手表端口状态效果示意图。
具体实施方式
下本结合实施例对本发明方法做进一步详细说明。
实施例
首先介绍一下本实施例的项目背景。Android Wear系统是Android系统的一个分支,是专为穿戴设备设计的一款智能操作系统,LG G Watch是搭载Android Wear系统的一款智能手表,针对LG G Watch,项目通过下载Linux内核源码,对源码进行修改编译,然后对手表内核进行替换,完成了在内核层对手表的麦克风、蓝牙和ADB端口进行控制的功能,同时提供了用户控制接口,用户可以通过手表自带的闹钟程序实现对三个端口的开关控制。本实施例作为该项目的一部分,实现了对手表三个端口的状态显示功能。
本实施例使用64位Windows7操作系统,并使用VMware软件在其中安装了64位的Ubuntu 14.04虚拟机,内核源码的下载编译和内核替换等工作都是在虚拟机中完成的。
下面介绍如何使用本发明的方法,实现对LG G Watch手表三个端口的状态显示。
步骤一、找到显示固定图片的应用
通过分析手表自带应用,在其中找到一个显示图片的应用,它是Settings应用下的About中的Regulatory Information界面,该界面用来显示手表的监管信息,其界面如图2所示。所显示的图片路径为/system/etc/regulatory_info.png,该图片为PNG格式的,但是将该图片替换为BMP位图格式后,Settings应用仍能对图片正常显示。
步骤二、创建用来显示信息的位图文件
如图3所示,在Windows系统中,使用画图工具创建一个宽280像素、高50像素的BMP文件,并将其保存为256色位图。然后使用WinHex软件打开该位图文件,将其内容拷贝到unsigned char bmpdata[15078]字节数组中。15078是该位图文件的字节大小。
步骤三、在内核文件系统中拦截对图片文件的读操作
在内核源码的/fs/read_write.c文件中,找到vfs_read函数,在其中添加对/system/etc/regulatory_info.png文件的拦截,主要代码如下:
其中sunzw_is_path函数是用来判断所读文件路径的,它使用内核中的dentry_path_raw函数获得file对象对应的绝对路径,然后使用strcmp函数比较该路径是否为/system/etc/regulatory_info.png。
步骤四、修改显示位图数组数据,使其显示内核信息。
手表三个端口的状态使用“MIC:0BT:1ADB:1”格式的字符串表示,用MIC表示麦克风,用BT表示蓝牙,ADB表示ADB。用0表示关闭状态,用1表示打开状态。“MIC:0BT:1ADB:1”表示麦克风处于关闭状态,蓝牙处于打开状态,ADB处于打开状态。
内核改变端口的状态后,通过调用set_text(char*text)来设置新的端口状态信息。set_text的定义如下:
其中pixoffset变量是位图字节数组bmpdata中像素数据区的偏移位置,根据位图文件的格式可知,位图的第11个字节开始的4个字节便是该变量的值。使用WinHex软件打开位图,发现第11个字节开始的4个字节为36040000,其对应的十进制为4*16*16+3*16+6=1078。
set_char(int x,int y,char c)函数用来在位图的(x,y)坐标处显示字符c,本例中在距离位图左边界5像素,上边界14像素的位置开始显示信息。每个字符的宽度为12像素,高度为22像素。set_char函数的定义如下:
fontdata_sun12x22是一个unsigned char型的数组,其中保存了256个ASCII字符对应的字形矩阵。字符的宽度为12像素,高度为22像素。该数组是从内核源码的/drivers/video/console/font_sun12x22.c文件中获得的。
最终实现的效果是,用户通过查看Settings应用About下的监管信息,便可以看到手表端口的状态,如图4所示。
以上所述的具体描述,对发明的目的、技术方案和优点益处都进行了进一步的详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于Android内核的动态生成位图图像的信息显示方法,其特征在于:包括以下步骤:
一、在系统自带应用中找到一个可以显示固定图片的应用,并记录下显示图片的文件路径P;
二、创建用来显示信息的位图文件,并将其内容拷贝到字节数组A中;
三、在内核虚拟文件系统的vfs_read函数中,添加对路径P的拦截,即如果读取文件的路径为P,则用字节数组A中的内容填充vfs_read函数的用户态缓冲区;
四、在内核中将需要显示的信息,根据位图文件的格式,动态地写入到字节数组A中的像素数据区域。
2.根据权利要求1所述的一种基于Android内核的动态生成位图图像的信息显示方法,其特征在于,在步骤三中,填充用户态缓冲区时,当读取文件的区域在字节数组A的范围之内的,则用A中的对应数据填充;对于范围之外的,则使用背景色或其他区别于显示信息字体的颜色填充。
3.根据权利要求1所述的一种基于Android内核的动态生成位图图像的信息显示方法,其特征在于,在步骤四中,在向字节数组A中写入显示信息之前,应先将A中的像素数据区用背景色填充,擦除掉上次显示的信息。
4.根据权利要求1所述的一种基于Android内核的动态生成位图图像的信息显示方法,其特征在于,步骤四所述需要显示的信息包括文本信息,但不限于文本信息,原理上包括所有能用位图显示的信息。
5.根据权利要求1-4任一所述的一种基于Android内核的动态生成位图图像的信息显示方法,其特征在于,所述需要显示的信息为文本信息时,通过使用字形矩阵,将字符转换为像素矩阵写入到字节数组A中,矩阵中对应值为1的像素使用字体颜色填充,对应值为0的像素使用背景色填充。
CN201510382316.6A 2015-07-02 2015-07-02 一种基于Android内核的动态生成位图图像的信息显示方法 Expired - Fee Related CN104965709B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510382316.6A CN104965709B (zh) 2015-07-02 2015-07-02 一种基于Android内核的动态生成位图图像的信息显示方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510382316.6A CN104965709B (zh) 2015-07-02 2015-07-02 一种基于Android内核的动态生成位图图像的信息显示方法

Publications (2)

Publication Number Publication Date
CN104965709A CN104965709A (zh) 2015-10-07
CN104965709B true CN104965709B (zh) 2018-04-06

Family

ID=54219743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510382316.6A Expired - Fee Related CN104965709B (zh) 2015-07-02 2015-07-02 一种基于Android内核的动态生成位图图像的信息显示方法

Country Status (1)

Country Link
CN (1) CN104965709B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105487962A (zh) * 2015-11-27 2016-04-13 山东超越数控电子有限公司 一种Linux内核片缓存信息可视化的实现方法
CN106056530B (zh) 2016-06-01 2019-12-06 腾讯科技(深圳)有限公司 应用中图片内容的显示方法及装置
CN110362311B (zh) * 2019-06-18 2023-03-14 创新先进技术有限公司 用于辅助位图对象内存分配的方法及装置
CN110276738B (zh) * 2019-06-28 2023-07-28 上海工程技术大学 一种bmp图像的roi替换处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102938863A (zh) * 2012-11-27 2013-02-20 乐视致新电子科技(天津)有限公司 基于Android系统的智能电视图标主题替换方法和装置
CN103544048A (zh) * 2013-10-31 2014-01-29 Tcl集团股份有限公司 一种Androd系统开机动画显示方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938524B2 (en) * 2011-01-27 2015-01-20 Wyse Technology L.L.C. Comparing and provisioning configurations for a client having a windows-based embedded image

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102938863A (zh) * 2012-11-27 2013-02-20 乐视致新电子科技(天津)有限公司 基于Android系统的智能电视图标主题替换方法和装置
CN103544048A (zh) * 2013-10-31 2014-01-29 Tcl集团股份有限公司 一种Androd系统开机动画显示方法及系统

Also Published As

Publication number Publication date
CN104965709A (zh) 2015-10-07

Similar Documents

Publication Publication Date Title
CN104965709B (zh) 一种基于Android内核的动态生成位图图像的信息显示方法
TW319852B (zh)
US7046848B1 (en) Method and system for recognizing machine generated character glyphs and icons in graphic images
Hartmann et al. Cross-platform mobile development
KR101159359B1 (ko) 다른 해상도를 갖는 디스플레이 상에 타겟 디지털 장치의디스플레이 시뮬레이션을 렌더링하는 방법, 시스템 및 매체
CN101873451B (zh) 一种实现在屏显示字符显示的方法及装置
JP3286331B2 (ja) ブロックテクスチャコンプレックスクリップマスクプロセッサ
US9292903B2 (en) Overlap aware reordering of rendering operations for efficiency
US20020118231A1 (en) Method of realistically displaying and interacting with electronic files
TWI498821B (zh) 非暫時性之機器可讀儲存媒體及用於使韌體支援舊版作業系統之方法及電腦系統
ES2266185T3 (es) Procesamiento de documentos digitales.
US20070013700A1 (en) Mobile communication terminal having function of animating input characters
CN105224315A (zh) 一种获取屏幕截图的方法及装置
CN109634611B (zh) 基于OpenGL的移动端三维模型ply文件解析与展示方法
US11748235B2 (en) Framework for providing binary release isolation for parts of a web application
Morris et al. Introduction to bada: A Developer's Guide
CN103136169A (zh) 一种显示文字的方法及装置
CN103677792A (zh) 一种基于龙芯平台Linux操作系统下rdesktop的优化方法
CN102253841B (zh) 一种小型图形用户界面系统
US11687465B2 (en) Spatial cache
CN103294719B (zh) 显示浏览器皮肤的方法和浏览器
CN114237795A (zh) 终端界面显示方法、装置、电子设备及可读存储介质
CN102801936A (zh) 实现在屏显示的方法
Toledo et al. FPGA-based platform for image and video processing embedded systems
US10417327B2 (en) Interactive and dynamically animated 3D fonts

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information

Inventor after: Tan Yuan

Inventor after: Sun Zongwen

Inventor after: Zhang Quanxin

Inventor after: Cheng Zijing

Inventor after: Li Yuanzhang

Inventor before: Sun Zongwen

Inventor before: Tan Yuan

Inventor before: Zhang Quanxin

Inventor before: Cheng Zijing

Inventor before: Li Yuanzhang

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180406

Termination date: 20210702