CN113778280A - 一种Linux兼容Android的显示消息通知方法及装置 - Google Patents

一种Linux兼容Android的显示消息通知方法及装置 Download PDF

Info

Publication number
CN113778280A
CN113778280A CN202111068376.2A CN202111068376A CN113778280A CN 113778280 A CN113778280 A CN 113778280A CN 202111068376 A CN202111068376 A CN 202111068376A CN 113778280 A CN113778280 A CN 113778280A
Authority
CN
China
Prior art keywords
application
message
notification
window
icon
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.)
Granted
Application number
CN202111068376.2A
Other languages
English (en)
Other versions
CN113778280B (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 Jide System Technology Co ltd
Original Assignee
Beijing Jide System Technology Co ltd
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 Jide System Technology Co ltd filed Critical Beijing Jide System Technology Co ltd
Priority to CN202111068376.2A priority Critical patent/CN113778280B/zh
Publication of CN113778280A publication Critical patent/CN113778280A/zh
Application granted granted Critical
Publication of CN113778280B publication Critical patent/CN113778280B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Abstract

本发明公开了一种Linux兼容Android的显示消息通知方法及装置,Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;Linux接收到数据流后,将数据流反序列化后发送给消息处理中心;将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。实现了在Linux系统上显示Android应用的消息通知,将Android的消息通知和Linux桌面通知完美融合。

Description

一种Linux兼容Android的显示消息通知方法及装置
技术领域
本发明涉及计算机操作系统领域,尤其涉及一种Linux兼容Android的显示消息通知方法及装置。
背景技术
用户在Linux兼容Android环境中运行使用Android应用时,Android应用的消息通知对用户是非常重要的功能,例如:用户使用微信或QQ App时经常会收到来自好友的消息提醒,这对用户非常重要。针对这种场景,Linux兼容Android环境可以直接使用Android原生的消息提醒功能,但是,使用这种方案有以下三个严重弊端无法解决:
弊端一:Android原生的消息提醒在应用窗口的顶部出现,这会导致每个应用窗口都会出现大量通知,杂乱无章,况且在应用窗口内部出现消息提醒,这与Linux系统体验完全不符。用户需要在应用窗口内下拉顶部的菜单栏才能显示通知内容,这不是桌面操作系统的交互过程,体验极差。
弊端二:在Android兼容环境中每一个应用都占用一个独立的窗口,如果在一个应用窗口内部出现其他应用的消息通知或系统消息,用户点击这些消息通知时,系统没有办法做相应的逻辑处理。
弊端三:目前大部分的消息通知是应用进入后台之后才能够接收到,但是在Android兼容环境中,每一个应用都是一个独立的窗口,所有的应用都在前台,没有应用处于后台,这将导致大部分消息通知无法接收。
发明内容
为了解决如何在Linux兼容Android环境中,获取Android应用的消息通知,及时通知提醒用户的问题,本发明提供了一种Linux兼容Android的显示消息通知方法及装置。
一方面,本发明提供一种Linux兼容Android的显示消息通知方法,所述方法包括如下步骤:
步骤S1:Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;
步骤S2:Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;
步骤S3:Linux接收到数据流后,将数据流反序列化转换成数据结构体,将数据结构体发送给消息处理中心;
步骤S4:消息处理中心根据应用窗口数据字典的应用包名与应用窗口的映射关系,判断应用窗口是否为活跃窗口,若应用窗口为活跃窗口,则将消息通知丢弃不予处理;若应用窗口为非活跃窗口,则将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。
进一步地,所述方法在步骤S1之前,还包括:
在Linux系统上启动一个后台服务进程,所述后台服务进程启动一个本地套接字服务端,所述套接字服务端启动以后等待Android侧的进程连接,如果没有连接,套接字服务端一直阻塞等待连接;当Android侧的进程连接上套接字服务端,并向套接字服务端发送数据包时,阻塞就被解除,执行相应的数据处理逻辑。
进一步地,所述方法中消息通知通过浮窗通知,具体为:
根据应用包名获取通知需要显示的应用图标;
将应用名称、图标路径、消息内容、消息超时时间打包成一个参数列表;
获取新消息ID值;将所述新消息ID值存在一个数据字典中,键为应用包名,值为消息ID,以使应用包名与消息ID对应;
在Linux系统界面顶部显示一个浮窗消息,消息显示应用名称、图标及消息内容;待超过超时时间后自动关闭浮窗,将消息显示到消息通知中心。
进一步地,所述方法中消息通知在系统通知托盘中闪烁通知,具体为:
根据数据结构体中的应用包名在数据字典中查找,如果查找到应用的托盘通知对象的图标,则调用显示函数将应用图标显示出来,并开启定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁;如果没有查找到应用的托盘通知对象的图标,则创建一个托盘图标对象,将该对象的图标设置为Android应用图标,并将此对象加入到数据字典,同时开启一个定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁。
进一步地,所述方法还包括:
当关闭Android应用窗口或将应用窗口由非活跃窗口切换为活跃窗口时,移除消息通知中心的应用通知,隐藏系统托盘的闪烁通知。
另一方面,本发明提供一种Linux兼容Android的显示消息通知装置,所述装置包括:
存储器,用于存储程序;
处理器,用于执行所述存储器中存储的程序,当所述存储器中存储的程序被执行时,所述处理器用于:
Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;
Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;
Linux接收到数据流后,将数据流反序列化转换成数据结构体,将数据结构体发送给消息处理中心;
消息处理中心根据应用窗口数据字典的应用包名与应用窗口的映射关系,判断应用窗口是否为活跃窗口,若应用窗口为活跃窗口,则将消息通知丢弃不予处理;若应用窗口为非活跃窗口,则将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。
进一步地,所述处理器用于:
在Linux系统上启动一个后台服务进程,所述后台服务进程启动一个本地套接字服务端,所述套接字服务端启动以后等待Android侧的进程连接,如果没有连接,套接字服务端一直阻塞等待连接;当Android侧的进程连接上套接字服务端,并向套接字服务端发送数据包时,阻塞就被解除,执行相应的数据处理逻辑。
进一步地,所述处理器用于:
根据应用包名获取通知需要显示的应用图标;
将应用名称、图标路径、消息内容、消息超时时间打包成一个参数列表;
获取新消息ID值;将所述新消息ID值存在一个数据字典中,键为应用包名,值为消息ID,以使应用包名与消息ID对应;
在Linux系统界面顶部显示一个浮窗消息,消息显示应用名称、图标及消息内容;待超过超时时间后自动关闭浮窗,将消息显示到消息通知中心。
进一步地,所述处理器用于:
根据数据结构体中的应用包名在数据字典中查找,如果查找到应用的托盘通知对象的图标,则调用显示函数将应用图标显示出来,并开启定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁;如果没有查找到应用的托盘通知对象的图标,则创建一个托盘图标对象,将该对象的图标设置为Android应用图标,并将此对象加入到数据字典,同时开启一个定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁。
进一步地,所述处理器用于:
当关闭Android应用窗口或将应用窗口由非活跃窗口切换为活跃窗口时,移除消息通知中心的应用通知,隐藏系统托盘的闪烁通知。
本发明与现有技术相比,具有以下优点:
实现了在Linux系统上显示Android应用的消息通知,将Android的消息通知和Linux桌面通知完美融合,用户无需区分是移动应用通知还是桌面应用通知,通知展示和操作效果完全一致。
附图说明
图1是本发明实施例提供的一种Linux兼容Android的显示消息通知方法示意图;
图2是本发明实施例提供的一种Linux兼容Android的显示消息通知装置组成示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
对于在Linux操作系统上兼容运行Android的环境来说,Android运行环境是运行在容器中的。
通过容器技术可以在Linux系统运行一个新的Linux系统(包括其他基于Linux系统定制的系统,如Android),容器使得客户机系统和主机系统相互隔离。与传统的基于虚拟机技术的方案不同,在容器技术中,客户系统与主机系统共享CPU、内存、存储等资源,资源开销很低。此外,通过适当的配置,还能使客户系统直接访问主机的硬件资源,进一步提升客户系统的性能。
图1是本发明实施例提供的一种Linux兼容Android的显示消息通知方法示意图;所述方法包括如下步骤:
步骤S1:Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;
Android所有通知的显示都是应用主动触发,应用通过NotificationManager的notify接口发送消息,Android系统服务层NotificationManagerService接受到消息通知,取出消息所属的包名、应用名称,因为Linux只需知道有通知消息,不需识别消息内容,故只需将消息的应用包名、应用名称通过接口hasNotification下发到AppService模块(Linux与Android通信的服务层)。
步骤S2:Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;
AppService(Android的后台服务进程)根据应用的包名package_name(应用的唯一标识符)查询应用名称,然后将这些信息封装成一个数据结构体Notification:
message Notification{
required string package_name=1;
required string app_name=2;
optional string text=3;
optional int32 win_id=4;
}
其中package_name是应用包名,app_name是应用名称,text是消息内容,win_id是Linux系统上应用的窗口ID。Notification结构体封装好以后,调用protobuffer库(google提供的序列化数据结构的开源库)将Notification数据结构转换成为高效可网络传输的数据流,然后通过unix socket server指定的路径创建一个socket客户端,连接到socket服务端,将序列化后的数据流发送给Linux系统的socket服务端。
步骤S3:Linux接收到数据流后,将数据流反序列化转换成数据结构体,将数据结构体发送给消息处理中心;
本地套接字服务端unix socket server接收到socket客户端的连接请求,阻塞被解除,读取socket客户端发送过来的数据流,将接收到的数据流保存到一个内部缓冲区,然后调用protobuffer库对数据流进行反序列化,让其转换成为可识别的数据结构体Notification。在当前进程里有一个消息处理中心HandlerCenter,专门处理Android系统发过来的各种数据请求,把结构体Notification传递给消息处理中心HandlerCenter,HandlerCenter就知道了Android系统需要Linux系统显示一个消息通知,于是将数据结构体Notification交给专门处理消息通知逻辑的类NotifHandler来处理。
步骤S4:消息处理中心根据应用窗口数据字典的应用包名与应用窗口的映射关系,判断应用窗口是否为活跃窗口,若应用窗口为活跃窗口,则将消息通知丢弃不予处理;若应用窗口为非活跃窗口,则将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。
消息处理中心HandlerCenter中保存了应用窗口的数据字典WidgetMap,使用键值对的形式保存数据,其中的键和值一一对应,根据键可以快速定位到对应的值,WidgetMap的键保存的是应用的包名package_name,值则保存应用的窗口对象QWiget,这样就可以根据包名package_name快递定位到应用窗口了。消息通知处理逻辑类NotifHandler根据结构体Notification里的应用包名package_name在HandlerCenter对象里查找WidgetMap,就可以快速定位到应用对应的窗口QWidget,调用QWidget的isActive函数可以判断此窗口是否为活跃窗口(焦点窗口),焦点窗口即是用户当前正在操作的窗口,如果是焦点窗口,则不打扰用户,将消息通知丢弃不处理;如果不是焦点窗口,则NotifHandler对象调用show函数执行下面的通知显示流程。
进一步地,所述方法在步骤S1之前,还包括:
在Linux系统上启动一个后台服务进程,所述后台服务进程启动一个本地套接字服务端,所述套接字服务端启动以后等待Android侧的进程连接,如果没有连接,套接字服务端一直阻塞等待连接;当Android侧的进程连接上套接字服务端,并向套接字服务端发送数据包时,阻塞就被解除,执行相应的数据处理逻辑。
在Linux系统上启动一个后台服务进程,在此服务进程里启动一个unix socketserver(即本地套接字服务端,用于Linux进程间通信),此套接字服务端指定了一个固定路径作为通信桥梁,Android端的进程就可以使用这个固定路径连接上它并发送数据包给这个套接字服务端了;unix socket server启动以后就会等待Android端的进程连接到它,如果没有任何连接,它就一直阻塞,等待连接。当Android端的进程连接上它并向它发送数据包时,阻塞就被解除,继续执行相应的数据处理逻辑。
进一步地,所述方法中消息通知通过浮窗通知,具体为:
根据应用包名获取通知需要显示的应用图标;
将应用名称、图标路径、消息内容、消息超时时间打包成一个参数列表;
获取新消息ID值;将所述新消息ID值存在一个数据字典中,键为应用包名,值为消息ID,以使应用包名与消息ID对应;
在Linux系统界面顶部显示一个浮窗消息,消息显示应用名称、图标及消息内容;待超过超时时间后自动关闭浮窗,将消息显示到消息通知中心。
具体地,在NotifHandler对象的show函数里,首先初始化一个dbus接口QDBusInterface对象,代码如:
mDBusInterface=std::make_shared<QDBusInterface>(
"org.freedesktop.Notifications",
"/org/freedesktop/Notifications",
"org.freedesktop.Notifications",
QDBusConnection::sessionBus());
说明,dbus是一种Linux系统进程间通信方式,QDBusInterface是QT平台封装的一个dbus接口,专用于dbus通信,QT是一个跨平台的C++应用和UI开发库,org.freedesktop.Notifications是Linux系统内置的专用于处理系统消息的高级API,它提供服务,可通过dbus调用让其处理系统消息。由于Android应用的图标都存放在一个固定路径下,图标的名称以应用包名package_name命名,所以可以根据应用包名package_name来获取通知需要显示的图标,然后将应用名称、图标路径、消息内容、消息超时时间(比如4秒)这些参数打包成一个参数列表QList,通过dbus接口对象QDBusInterface调用org.freedesktop.Notifications的Notify接口,该调用返回一个新消息ID值,将此消息ID值存在一个数据字典PackageMap里,键是package_name,值是消息ID,这样使得消息ID和应用包名package_name一一对应。org.freedesktop.Notifications服务执行了Notify接口后就在系统顶部显示一个浮窗消息,消息显示传过去的应用名称,图标及消息内容,并根据传过去的超时时间(比如4秒)自动关闭,将其显示到系统消息中心里面。
进一步地,所述方法中消息通知在系统通知托盘中闪烁通知,具体为:
根据数据结构体中的应用包名在数据字典中查找,如果查找到应用的托盘通知对象的图标,则调用显示函数将应用图标显示出来,并开启定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁;如果没有查找到应用的托盘通知对象的图标,则创建一个托盘图标对象,将该对象的图标设置为Android应用图标,并将此对象加入到数据字典,同时开启一个定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁。
具体地,系统托盘是指系统屏幕右下角的状态栏,其上面显示了一些小图标,闪烁通知是指托盘上面有小图标不停的闪烁,表示此应用有新的通知。NotifHandler里还维护了一个数据字典SystemTrayMap,专门用于存储应用包名与托盘通知的映射关系,使用包名package_name就可以快速定位到该应用的托盘通知。首先根据结构体Notification里的包名package_name在数据字典SystemTrayMap里查找,如果查找到一个该应用的托盘通知对象QSystemTrayIcon,则说明托盘通知存在,只需要调用show函数让其显示出来,然后开启一个定时器,定时器每间隔一定时间(比如600毫秒)超时一次,每次超时都交替显示托盘通知的图标,达到其闪烁的效果。如果根据包名package_name在数据字典SystemTrayMap里没有找到QSystemTrayIcon,则新创建一个托盘图标对象QSystemTrayIcon,将该对象的图标设置为Android app图标,并将此对象加入到数据字典SystemTrayMap里面,同时开启一个定时器,定时器每间隔一定时间(比如600毫秒)超时一次,每次超时都交替显示QSystemTrayIcon的图标,达到托盘图标闪烁的效果。QSystemTrayIcon是一个综合数据的结构体,不仅仅只有图标,还可以包含其他数据。
进一步地,所述方法还包括:
当关闭Android应用窗口或将应用窗口由非活跃窗口切换为活跃窗口时,移除消息通知中心的应用通知,隐藏系统托盘的闪烁通知。
在显示一个应用窗口QWidget时,QWidget里面保存了应用的包名package_name,当用户关闭应用窗口或切换此窗口为焦点窗口时,根据QWidget里面的package_name在NotifHandler里的数据字典PackageMap里可找到该应用的系统通知ID,通过dbus接口QDBusInterface调用org.freedesktop.Notifications服务的CloseNotification函数并将此通知ID传递给此函数,这个系统通知就会被关闭,将此应用包名package_name从数据字典PackageMap里面移除。然后根据包名package_name在系统托盘数据字典SystemTrayMap里可查找到该应用的托盘对象QSystemTrayIcon,调用此对象的hide函数就会隐藏此托盘图标通知,同时停止它的定时器。
用户点击通知中心的消息,消息自动移除,将应用窗口显示到最上面,置为焦点窗口,并隐藏系统托盘的闪烁通知。
用户点击通知中心的消息时,消息默认的行为是移除,需要将此消息对应的应用窗口显示到屏幕最上面。NotifHandler里保存有一个数据字典NotiIdMap,它的键是通知ID,值是包名package_name,也就是可以根据通知ID定位到它对应的应用包名。点击通知时可以得到此通知的ID,根据此通知ID在数据字典NotiIdMap里查找到对应的应用包名package_name,使用包名package_name在窗口数据字典WidgetMap里查找到对应的应用窗口QWidget,调用QWidget对象的raise函数便将此窗口显示到最上层,再调用activateWindow函数使此窗口成为焦点窗口。然后根据包名package_name在系统托盘数据字典SystemTrayMap里查找到该应用的托盘通知对象QSystemTrayIcon,调用此对象的hide函数就隐藏了此托盘通知,同时停止它的定时器。
用户点击系统托盘的闪烁通知,移除通知中心的相关消息,将应用窗口显示到最上面,将其置为焦点窗口,并隐藏系统托盘的闪烁通知。
托盘通知对象QSystemTrayIcon里保存了此通知的应用包名package_name,当点击此托盘通知时使用包名package_name在通知数据字典PackageMap里可找到该应用的系统通知ID,通过dbus接口QDBusInterface调用org.freedesktop.Notifications服务的CloseNotification函数并将此通知ID传递给此函数,此系统通知就会被关闭。使用包名package_name在窗口数据字典WidgetMap里查找到对应的应用窗口QWidget,调用QWidget对象的raise函数便将此窗口显示到最上层,再调用QWidget的activateWindow函数使此窗口成为焦点窗口。然后根据包名package_name在系统托盘数据字典SystemTrayMap里查找到该应用的托盘对象QSystemTrayIcon,调用此对象的hide函数就隐藏了此托盘通知,同时停止它的定时器。
图2是本发明实施例提供的一种Linux兼容Android的显示消息通知装置组成示意图;所述装置包括:
存储器,用于存储程序;
处理器,用于执行所述存储器中存储的程序,当所述存储器中存储的程序被执行时,所述处理器用于:
Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;
Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;
Linux接收到数据流后,将数据流反序列化转换成数据结构体,将数据结构体发送给消息处理中心;
消息处理中心根据应用窗口数据字典的应用包名与应用窗口的映射关系,判断应用窗口是否为活跃窗口,若应用窗口为活跃窗口,则将消息通知丢弃不予处理;若应用窗口为非活跃窗口,则将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。
进一步地,所述处理器用于:
在Linux系统上启动一个后台服务进程,所述后台服务进程启动一个本地套接字服务端,所述套接字服务端启动以后等待Android侧的进程连接,如果没有连接,套接字服务端一直阻塞等待连接;当Android侧的进程连接上套接字服务端,并向套接字服务端发送数据包时,阻塞就被解除,执行相应的数据处理逻辑。
进一步地,所述处理器用于:
根据应用包名获取通知需要显示的应用图标;
将应用名称、图标路径、消息内容、消息超时时间打包成一个参数列表;
获取新消息ID值;将所述新消息ID值存在一个数据字典中,键为应用包名,值为消息ID,以使应用包名与消息ID对应;
在Linux系统界面顶部显示一个浮窗消息,消息显示应用名称、图标及消息内容;待超过超时时间后自动关闭浮窗,将消息显示到消息通知中心。
进一步地,所述处理器用于:
根据数据结构体中的应用包名在数据字典中查找,如果查找到应用的托盘通知对象的图标,则调用显示函数将应用图标显示出来,并开启定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁;如果没有查找到应用的托盘通知对象的图标,则创建一个托盘图标对象,将该对象的图标设置为Android应用图标,并将此对象加入到数据字典,同时开启一个定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁。
进一步地,所述处理器用于:
当关闭Android应用窗口或将应用窗口由非活跃窗口切换为活跃窗口时,移除消息通知中心的应用通知,隐藏系统托盘的闪烁通知。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种Linux兼容Android的显示消息通知方法,其特征在于,所述方法包括如下步骤:
步骤S1:Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;
步骤S2:Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;
步骤S3:Linux接收到数据流后,将数据流反序列化转换成数据结构体,将数据结构体发送给消息处理中心;
步骤S4:消息处理中心根据应用窗口数据字典的应用包名与应用窗口的映射关系,判断应用窗口是否为活跃窗口,若应用窗口为活跃窗口,则将消息通知丢弃不予处理;若应用窗口为非活跃窗口,则将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。
2.如权利要求1所述的Linux兼容Android的显示消息通知方法,其特征在于,所述方法在步骤S1之前,还包括:
在Linux系统上启动一个后台服务进程,所述后台服务进程启动一个本地套接字服务端,所述套接字服务端启动以后等待Android侧的进程连接,如果没有连接,套接字服务端一直阻塞等待连接;当Android侧的进程连接上套接字服务端,并向套接字服务端发送数据包时,阻塞就被解除,执行相应的数据处理逻辑。
3.如权利要求1所述的Linux兼容Android的显示消息通知方法,其特征在于,所述方法中消息通知通过浮窗通知,具体为:
根据应用包名获取通知需要显示的应用图标;
将应用名称、图标路径、消息内容、消息超时时间打包成一个参数列表;
获取新消息ID值;将所述新消息ID值存在一个数据字典中,键为应用包名,值为消息ID,以使应用包名与消息ID对应;
在Linux系统界面顶部显示一个浮窗消息,消息显示应用名称、图标及消息内容;待超过超时时间后自动关闭浮窗,将消息显示到消息通知中心。
4.如权利要求1所述的Linux兼容Android的显示消息通知方法,其特征在于,所述方法中消息通知在系统通知托盘中闪烁通知,具体为:
根据数据结构体中的应用包名在数据字典中查找,如果查找到应用的托盘通知对象的图标,则调用显示函数将应用图标显示出来,并开启定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁;如果没有查找到应用的托盘通知对象的图标,则创建一个托盘图标对象,将该对象的图标设置为Android应用图标,并将此对象加入到数据字典,同时开启一个定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁。
5.如权利要求1所述的Linux兼容Android的显示消息通知方法,其特征在于,所述方法还包括:
当关闭Android应用窗口或将应用窗口由非活跃窗口切换为活跃窗口时,移除消息通知中心的应用通知,隐藏系统托盘的闪烁通知。
6.一种Linux兼容Android的显示消息通知装置,其特征在于,所述装置包括:
存储器,用于存储程序;
处理器,用于执行所述存储器中存储的程序,当所述存储器中存储的程序被执行时,所述处理器用于:
Android系统框架服务层监听消息通知,获取消息所属的应用包名、应用名称;
Android服务进程根据应用的包名查询应用名称,将应用包名、应用名称、消息内容、Linux系统上应用的窗口ID封装成一个数据结构体,再将数据结构体转换成数据流通过socket发送给Linux;
Linux接收到数据流后,将数据流反序列化转换成数据结构体,将数据结构体发送给消息处理中心;
消息处理中心根据应用窗口数据字典的应用包名与应用窗口的映射关系,判断应用窗口是否为活跃窗口,若应用窗口为活跃窗口,则将消息通知丢弃不予处理;若应用窗口为非活跃窗口,则将消息通知在消息通知中心显示或在系统通知托盘中闪烁通知或通过浮窗通知。
7.如权利要求6所述的Linux兼容Android的显示消息通知装置,其特征在于,所述处理器用于:
在Linux系统上启动一个后台服务进程,所述后台服务进程启动一个本地套接字服务端,所述套接字服务端启动以后等待Android侧的进程连接,如果没有连接,套接字服务端一直阻塞等待连接;当Android侧的进程连接上套接字服务端,并向套接字服务端发送数据包时,阻塞就被解除,执行相应的数据处理逻辑。
8.如权利要求6所述的Linux兼容Android的显示消息通知装置,其特征在于,所述处理器用于:
根据应用包名获取通知需要显示的应用图标;
将应用名称、图标路径、消息内容、消息超时时间打包成一个参数列表;
获取新消息ID值;将所述新消息ID值存在一个数据字典中,键为应用包名,值为消息ID,以使应用包名与消息ID对应;
在Linux系统界面顶部显示一个浮窗消息,消息显示应用名称、图标及消息内容;待超过超时时间后自动关闭浮窗,将消息显示到消息通知中心。
9.如权利要求6所述的Linux兼容Android的显示消息通知装置,其特征在于,所述处理器用于:
根据数据结构体中的应用包名在数据字典中查找,如果查找到应用的托盘通知对象的图标,则调用显示函数将应用图标显示出来,并开启定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁;如果没有查找到应用的托盘通知对象的图标,则创建一个托盘图标对象,将该对象的图标设置为Android应用图标,并将此对象加入到数据字典,同时开启一个定时器,定时器每间隔一定时间超时一次,每次超时的时候交替显示托盘通知的图标,使图标闪烁。
10.如权利要求6所述的Linux兼容Android的显示消息通知装置,其特征在于,所述处理器用于:
当关闭Android应用窗口或将应用窗口由非活跃窗口切换为活跃窗口时,移除消息通知中心的应用通知,隐藏系统托盘的闪烁通知。
CN202111068376.2A 2021-09-13 2021-09-13 一种Linux兼容Android的显示消息通知方法及装置 Active CN113778280B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111068376.2A CN113778280B (zh) 2021-09-13 2021-09-13 一种Linux兼容Android的显示消息通知方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111068376.2A CN113778280B (zh) 2021-09-13 2021-09-13 一种Linux兼容Android的显示消息通知方法及装置

Publications (2)

Publication Number Publication Date
CN113778280A true CN113778280A (zh) 2021-12-10
CN113778280B CN113778280B (zh) 2023-11-14

Family

ID=78843019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111068376.2A Active CN113778280B (zh) 2021-09-13 2021-09-13 一种Linux兼容Android的显示消息通知方法及装置

Country Status (1)

Country Link
CN (1) CN113778280B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114201134A (zh) * 2022-02-17 2022-03-18 北京麟卓信息科技有限公司 安卓兼容环境中多窗口模式下Toast的优化显示方法
CN114416239A (zh) * 2021-12-30 2022-04-29 麒麟软件有限公司 一种将Android应用消息通知快速显示在Linux系统上的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011120288A1 (zh) * 2010-03-31 2011-10-06 北京播思软件技术有限公司 一种在android系统中运行linux应用的方法及装置
US20120317498A1 (en) * 2011-06-07 2012-12-13 Research In Motion Limited Electronic communication device and method for displaying icons
CN104092815A (zh) * 2014-05-22 2014-10-08 中兴通讯股份有限公司 一种基于安卓系统的应用间信息交互方法及装置
CN104317661A (zh) * 2014-11-04 2015-01-28 上海斐讯数据通信技术有限公司 嵌入式双系统的系统间通信方法及装置
CN112269604A (zh) * 2020-11-11 2021-01-26 北京技德系统技术有限公司 在Linux上兼容运行Android应用的窗口交互方法及装置
CN113204307A (zh) * 2021-05-06 2021-08-03 技德技术研究所(武汉)有限公司 一种在Linux上兼容运行Android系统的文件发送方法及装置
CN113254154A (zh) * 2021-05-21 2021-08-13 技德技术研究所(武汉)有限公司 一种在Linux上兼容运行Android系统的应用启动方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011120288A1 (zh) * 2010-03-31 2011-10-06 北京播思软件技术有限公司 一种在android系统中运行linux应用的方法及装置
US20120317498A1 (en) * 2011-06-07 2012-12-13 Research In Motion Limited Electronic communication device and method for displaying icons
CN104092815A (zh) * 2014-05-22 2014-10-08 中兴通讯股份有限公司 一种基于安卓系统的应用间信息交互方法及装置
CN104317661A (zh) * 2014-11-04 2015-01-28 上海斐讯数据通信技术有限公司 嵌入式双系统的系统间通信方法及装置
CN112269604A (zh) * 2020-11-11 2021-01-26 北京技德系统技术有限公司 在Linux上兼容运行Android应用的窗口交互方法及装置
CN113204307A (zh) * 2021-05-06 2021-08-03 技德技术研究所(武汉)有限公司 一种在Linux上兼容运行Android系统的文件发送方法及装置
CN113254154A (zh) * 2021-05-21 2021-08-13 技德技术研究所(武汉)有限公司 一种在Linux上兼容运行Android系统的应用启动方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114416239A (zh) * 2021-12-30 2022-04-29 麒麟软件有限公司 一种将Android应用消息通知快速显示在Linux系统上的方法
CN114416239B (zh) * 2021-12-30 2023-08-22 麒麟软件有限公司 一种将Android应用消息通知快速显示在Linux系统上的方法
CN114201134A (zh) * 2022-02-17 2022-03-18 北京麟卓信息科技有限公司 安卓兼容环境中多窗口模式下Toast的优化显示方法
CN114201134B (zh) * 2022-02-17 2022-04-29 北京麟卓信息科技有限公司 安卓兼容环境中多窗口模式下Toast的优化显示方法

Also Published As

Publication number Publication date
CN113778280B (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
US10877826B2 (en) Message processing method and apparatus, storage medium, and computer device
US11803451B2 (en) Application exception recovery
KR101702729B1 (ko) 다중 환경 운영 시스템에서 환경을 전환하는 시스템 및 방법
CN108023808B (zh) 应用程序中的消息分发方法及装置
US8887082B2 (en) Method and system for realizing message interactions in a multi-tabs application
WO2013060245A1 (zh) 用于移动终端的应用屏幕截图方法和装置
CN108803964B (zh) 浮标显示方法、装置、终端及存储介质
US10949154B2 (en) Systems and methods for using screen sampling to detect display changes
CN113778280B (zh) 一种Linux兼容Android的显示消息通知方法及装置
US10298469B2 (en) Automatic asynchronous handoff identification
US20110106929A1 (en) System for managing a virtualization solution and management server and method for managing the same
WO2019047189A1 (zh) 消息显示方法、装置及终端
WO2017211226A1 (zh) 展示媒体文件的方法、终端和存储介质
US20110061056A1 (en) Portable device and method for providing shortcuts in the portable device
CN110233880B (zh) Udp数据包的传输方法、系统、介质和电子设备
US11314391B2 (en) Navigation bar controlling method and terminal
CN109361948B (zh) 界面管理方法、智能终端及可读存储介质
WO2023040584A1 (zh) 设备数据的处理方法、装置、电子设备以及存储介质
WO2019047183A1 (zh) 按键显示方法、装置及终端
WO2016106934A1 (zh) 切换操作系统的方法、装置及终端
CN107015866B (zh) 一种数据处理方法及装置
US11249771B2 (en) Terminal input invocation
CN106874010B (zh) 一种Android系统中ListView快速分页加载的方法
CN114281555A (zh) 应用状态同步方法、装置、电子设备和存储介质
WO2023169221A1 (zh) 一种跨系统运行应用程序的方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant