CN108882053B - 弹幕消息分发方法、装置、设备及存储介质 - Google Patents

弹幕消息分发方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN108882053B
CN108882053B CN201810711994.6A CN201810711994A CN108882053B CN 108882053 B CN108882053 B CN 108882053B CN 201810711994 A CN201810711994 A CN 201810711994A CN 108882053 B CN108882053 B CN 108882053B
Authority
CN
China
Prior art keywords
broadcast
bullet screen
message
distribution
action description
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.)
Active
Application number
CN201810711994.6A
Other languages
English (en)
Other versions
CN108882053A (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810711994.6A priority Critical patent/CN108882053B/zh
Publication of CN108882053A publication Critical patent/CN108882053A/zh
Application granted granted Critical
Publication of CN108882053B publication Critical patent/CN108882053B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6405Multicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/437Interfacing the upstream path of the transmission network, e.g. for transmitting client requests to a VOD server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/488Data services, e.g. news ticker
    • H04N21/4884Data services, e.g. news ticker for displaying subtitles

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明实施例公开了一种弹幕消息分发方法、装置、设备及存储介质。该方法包括:广播发布模块依据待分发弹幕消息及广播发送动作描述,构建广播意图对象,并广播广播意图对象;广播处理模块依据广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解确定至少一个目标弹幕分发对象,并将广播意图对象发送至至少一个目标弹幕分发对象,系统广播接收器注册注解为弹幕分发对象中预先定义的编译时注解,包含至少一个广播接收动作描述;目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。通过上述技术方案,实现了将弹幕消息直达式分发至各个弹幕分发对象,提高了弹幕消息的分发有效性及分发效率。

Description

弹幕消息分发方法、装置、设备及存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种弹幕消息分发方法、装置、设备及存储介质。
背景技术
在诸如斗鱼的音视频播放应用软件中,会大量使用弹幕消息。通常,这些弹幕消息是由音视频播放应用软件逐条分发给需要使用弹幕消息的各个弹幕分发目标,如视图、业务控制器或数据管理器等。
以弹幕分发目标为视图为例,目前,对于安装于Android系统的音视频播放应用软件,其向各个视图分发弹幕消息的方式是逐层传递的方式。具体来说,Android系统中的各个视图是按照层级关系布设的,那么基于该层级关系,可以构建各个视图之间的引用关系链。弹幕消息在各个视图之间的传递,便是按照上述引用关系链进行逐层传递的。参见图1,如果一个位于第三视图层104中的视图需要获取到弹幕消息101,那么该弹幕消息101需要按照引用关系链,先传递至第一视图层102,再由第一视图层102传递至第二视图层103,并最终由第二视图层103再传递至第三视图层104。这样,该视图获取弹幕消息的过程就比较复杂,用时较长,效率较低。而且,即便第一视图层102和第二视图层103中的视图不需要该弹幕消息,其也必须接收并传递该弹幕消息,无疑会造成系统资源的浪费。
现有的弹幕消息在音视频播放应用软件中的分发方式存在分发过程复杂,分发效率低以及系统资源消耗较高的问题。
发明内容
本发明实施例提供一种弹幕消息分发方法、装置、设备及存储介质,以实现音视频播放/直播应用软件中弹幕消息的直达式分发,使得各个弹幕分发目标能够直接获得其关注的弹幕消息,提高了弹幕消息的分发有效性和分发效率。
第一方面,本发明实施例提供了一种弹幕消息分发方法,包括:
广播发布模块依据待分发弹幕消息确定与所述待分发弹幕消息对应的广播发送动作描述;
所述广播发布模块依据所述待分发弹幕消息及所述广播发送动作描述,构建广播意图对象,并广播所述广播意图对象;
广播处理模块依据所述广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将所述广播意图对象发送至至少一个所述目标弹幕分发对象,其中,所述系统广播接收器注册注解包含至少一个广播接收动作描述,所述广播接收器注册注解为所述弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的所述弹幕分发对象预先注册为系统广播接收器;
所述目标弹幕分发对象调用广播接收函数,接收所述广播意图对象,并依据所述广播意图对象获取所述待分发弹幕消息。
第二方面,本发明实施例还提供了一种弹幕消息分发装置,该装置包括:
广播发布模块,用于依据待分发弹幕消息确定与所述待分发弹幕消息对应的广播发送动作描述;依据所述待分发弹幕消息及所述广播发送动作描述,构建广播意图对象,并广播所述广播意图对象;
广播处理模块,用于依据所述广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将所述广播意图对象发送至至少一个所述目标弹幕分发对象,其中,所述系统广播接收器注册注解包含至少一个广播接收动作描述,所述广播接收器注册注解为所述弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的所述弹幕分发对象预先注册为系统广播接收器;
弹幕消息接收模块,用于所述目标弹幕分发对象调用广播接收函数,接收所述广播意图对象,并依据所述广播意图对象获取所述待分发弹幕消息。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的弹幕消息分发方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的弹幕消息分发方法。
本发明实施例通过广播发布模块依据待分发弹幕消息及其对应的广播发送动作描述,构建广播意图对象,并将该广播意图对象进行系统广播,使得待分发弹幕消息以系统广播消息的方式进行全局分发。通过为弹幕分发对象设置对应的系统广播接收器注册注解,将弹幕分发对象在程序编译期间,预先注册为能够接收其需求弹幕消息的系统广播接收器,使得弹幕分发对象能够直接接收基于Android系统广播机制而分发的弹幕消息,为弹幕消息的直达式分发提供基础,同时使得弹幕消息的广播式分发具有更强的针对性。通过广播处理模块依据广播意图对象和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将所述广播意图对象发送至至少一个所述目标弹幕分发对象;所述目标弹幕分发对象调用广播接收函数,接收所述广播意图对象,并依据所述广播意图对象获取所述待分发弹幕消息。实现了基于Android系统广播机制,将弹幕消息直达式分发至音视频播放/直播应用软件中与待分发弹幕消息对应的各个弹幕分发对象,简化了弹幕消息分发流程,提高了弹幕消息的分发有效性及分发效率。
附图说明
图1是现有技术中弹幕消息分发的过程示意图;
图2是本发明实施例一中的一种弹幕消息分发方法的流程图;
图3是本发明实施例一中的弹幕消息分发的过程示意图;
图4是本发明实施例二中的一种弹幕消息分发方法的流程图;
图5是本发明实施例三中的一种弹幕消息分发装置的结构示意图;
图6是本发明实施例四中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例提供的弹幕消息分发方法,可适用于Android客户端将接收到的弹幕消息,分发至音视频播放/直播应用软件内的各个弹幕分发对象,尤其适用于弹幕消息数量较多的情况。该方法可以由弹幕消息分发装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在安装有音视频播放/直播应用软件的设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图2,本实施例的方法具体包括如下步骤:
S110、广播发布模块依据待分发弹幕消息确定与待分发弹幕消息对应的广播发送动作描述。
其中,广播发布模块是Android系统中发布系统广播的模块。待分发弹幕消息是指等待分发至弹幕分发对象的弹幕消息,其是Android客户端从弹幕服务器中获取。广播发送动作描述是指对发送的广播消息所具有的动作功能进行的描述或说明,其通常是广播发送动作的简称或关键词,其可以为系统动作描述,也可以是预先进行自定义的广播动作描述。由于本发明实施例中需将待分发弹幕消息分发至需要接收待分发弹幕消息的弹幕分发对象(即目标弹幕分发对象)中,故这里的广播发送动作描述需根据待分发弹幕消息进行针对性设置,以便后续进行针对性的广播消息接收。这里,弹幕分发对象是指音视频播放/直播应用软件中需要接收弹幕消息的组件对象,例如可以是用于弹幕消息显示的视图对象,也可以是用于对弹幕消息进行数据处理的业务控制器对象,还可以是对弹幕消息进行存储或传输的数据管理器对象。
具体地,广播发布模块从弹幕服务器获取待分发弹幕消息,具体的获取方式可以是Android客户端向弹幕服务器发送数据获取请求,弹幕服务器被动响应数据获取请求来获取;优选是通过Android客户端中预先建立的弹幕监听器接口对象及弹幕监听器接口对象中作为回调函数的消息传输函数,接收弹幕服务器中的弹幕库对象回调消息传输函数发送的弹幕消息,弹幕监听器接口对象用于监听弹幕服务器中的弹幕库对象。也就是说,Android客户端从服务器获取弹幕消息是通过Android客户端中设置弹幕监听器接口对象,对弹幕服务器中的弹幕库对象进行监听,为弹幕服务器发送弹幕消息至Android客户端提供接口,且弹幕监听器中包含回调函数,为弹幕服务器发送弹幕消息至Android客户端提供调用函数指针。当弹幕消息到达弹幕服务器时,触发弹幕服务器主动调用回调函数,即弹幕服务器通过回调函数的函数指针,将弹幕消息由弹幕监听器接口发送至Android客户端,Android客户端则及时地、被动地接收弹幕消息,即待分发弹幕消息。之后,广播发布模块根据待分发弹幕消息确定对应的广播发送动作描述,该确定过程详见后续S120中的说明。
S120、广播发布模块依据待分发弹幕消息及广播发送动作描述,构建广播意图对象,并广播广播意图对象。
其中,广播意图对象是指发送广播时广播出去的意图对象intent,其是Android系统中广播消息的数据承载者。
具体地,在利用Android系统提供的广播机制进行弹幕消息的分发之前,需要先将待分发弹幕消息和广播发送动作描述构建为可用于广播发送的数据格式。具体实施时,将广播发送动作描述作为广播意图对象intent构建的动作action,将待分发弹幕消息作为广播意图对象intent构建的数据data,按照意图对象的数据格式,构建广播意图对象。之后,利用Android系统中进行广播的广播发送函数,将构建的广播意图对象作为全局广播消息进行广播。
S130、广播处理模块依据广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将广播意图对象发送至至少一个目标弹幕分发对象,其中,系统广播接收器注册注解包含至少一个广播接收动作描述,广播接收器注册注解为弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的弹幕分发对象预先注册为系统广播接收器。
其中,广播处理模块是对广播消息进行过滤及广播接收器匹配等处理的模块。注解,也叫元数据,以“@+关键字”的形式出现,例如@Receive。注解与类、接口和枚举等处于同一个层次,并可以应用于包、类型、构造方法、方法、成员变量、参数或本地变量的声明中,用来对这些元素进行说明注释。系统广播接收器注册注解是指Android系统中用于进行系统广播接收器自动注册的注解,其属于编译时注解,即在程序编译期间被扫描和处理的注解。当系统广播接收器注册注解被处理后,会生成将弹幕分发对象注册为系统广播接收器的注册代码,该注册代码中包含广播消息过滤段intent-filter及其中的广播接收动作描述。广播接收动作描述是指对可以接收的广播消息所具有的动作功能进行的描述或说明,其通常是广播接收动作的简称或关键词,可以为系统提供的动作描述,也可以是预先进行自定义的动作描述。广播接收动作描述通常是在注册广播接收器时设置在广播消息过滤段intent-filter中的动作描述,用于对系统广播消息进行过滤,筛选出广播发送动作描述与广播接收动作描述对应一致的广播消息。系统广播接收器是指可以接收系统广播消息的接收器。
通常情况下,以弹幕为例,是将Android系统中音视频播放/直播应用软件中的专门处理弹幕消息的弹幕类注册为系统广播接收器,然后通过应用软件内的原生引用关系链,从上述弹幕类中向下层视图层层传递弹幕消息,直至弹幕消息到达目标视图层中的弹幕分发对象。这种传统的基于广播机制的弹幕消息分发方式的分发过程复杂且分发效率低。
本发明实施例中是在系统广播消息发布之前,以在每个弹幕分发对象中设置一个对应的系统广播接收器注册注解的方式,预先将各个弹幕分发对象注册为系统广播接收器,以便其直接接收Android系统所发出的系统广播,省略了中间视图层的弹幕消息传输过程。在弹幕分发对象注册时,由于一个弹幕分发对象可以接收多条对应的弹幕消息(即可接收弹幕消息),故为了提高弹幕分发器作为系统广播接收器的消息筛选能力,在该弹幕分发对象的系统广播接收器注册注解的处理实现代码中设置了至少一个广播接收动作描述,以便其接收对应的多条可接收弹幕消息。
具体地,广播处理模块在接收到广播发布模块发布的广播消息时,获取广播意图对象中的广播发送动作描述。然后,将广播发送动作描述与系统广播总线中存储的所有广播接收动作描述进行比较,确定出与广播发送动作描述一致的广播接收动作描述对应的系统广播接收器,即至少一个目标弹幕分发对象。更进一步地,是将广播发送动作描述与每个弹幕分发对象对应的每个系统广播接收器注册注解的实现代码中的至少一个广播接收动作描述比较,以确定出至少一个目标弹幕分发对象。之后,将广播意图对象直接发送至至少一个目标弹幕分发对象,以触发目标弹幕分发对象中的广播接收函数的执行。上述动作描述的比较过程(或称遍历过程)与广播接收动作描述的存储结构相对应。例如,若广播接收动作描述以键值对结构存储,则遍历过程为根据键值访问键值对数据结构的过程;若广播接收动作描述以普通变量形式存储,则遍历过程为循环访问变量及比较比较变量值的过程。
示例性地,广播接收动作描述通过如下步骤预先确定:依据弹幕分发对象对应的至少一个消息标识或至少一个消息类型,确定弹幕分发对象对应的至少一个广播接收动作描述。
其中,消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该消息标识应当是一条弹幕消息的唯一的、全局的标识。消息类型是指弹幕消息的种类,其可以是预先对消息标识进行类别划分而确定。
具体地,弹幕分发对象中每一个广播接收动作描述的设置都是根据可接收弹幕消息对应的消息标识或消息类型来设置的,而具体是依据消息标识还是消息类型,可以预先设定为某一个动作描述设置依据,优选是根据需要分发的弹幕消息的总数量来确定一个动作描述设置依据。
当总数量大于或等于预先设定的消息数量阈值时,根据可接收弹幕消息的消息标识,确定可接收弹幕消息的消息类型,并根据消息类型确定广播接收动作描述。这是因为需要分发的弹幕消息的数量较多时,如果每一条弹幕消息都设置一条对应的广播发送动作描述,那么需要开辟大量的内存空间来存储所有的广播发送动作描述。并且,针对待分发弹幕消息,需要占用较多的系统内存来从存储的广播发送动作描述中筛选待分发弹幕消息对应的广播接收动作描述。所以,为了节省系统内存资源,本实施例在总数量较大时,将广播接收动作描述的确定设计为根据弹幕消息对应的消息类型来确定。例如,消息标识为ID1、ID2和ID3的弹幕消息对应的消息类别为Class1,那么,当可接收弹幕消息的消息标识为ID1、ID2或ID3时,可确定该可接收弹幕消息的消息类型为Class1,进一步可将该可接收弹幕消息的广播接收动作描述确定为“android.danmu.Class1.message”。当总数量小于消息数量阈值时,根据可接收弹幕消息的消息标识直接确定广播接收动作描述。这是因为可接收弹幕消息的数量较少,不存在大量占用系统内存的情况,故可以直接根据弹幕消息的消息标识来唯一确定对应的广播接收动作描述。例如,当可接收弹幕消息的消息标识为ID1时,可将该可接收弹幕消息的广播接收动作描述确定为“android.danmu.ID1.message”。
按照上述过程,确定弹幕分发对象的每一个可接收弹幕消息对应的广播接收动作描述,以获得该弹幕分发对象对应的至少一个广播接收动作描述。
相应地,广播发布模块依据待分发弹幕消息确定与待分发弹幕消息对应的广播发送动作描述包括:广播发布模块依据待分发弹幕消息对应的消息标识或消息类型,确定广播发送动作描述。
具体地,由于广播发送动作描述与广播接收动作描述是广播机制中成对存在的,所以本发明实施例中的广播发送动作描述的确定方式与广播接收动作描述的设置方式相同,也优选为根据总数量确定动作描述设置依据——消息标识或消息类型,并根据待分发弹幕消息确定对应的动作描述设置依据。具体实施时,在总数量大于或等于消息数量阈值时,根据待分发弹幕消息的消息标识,确定待分发弹幕消息的消息类型,并根据消息类型确定广播发送动作描述。例如,待分发弹幕消息的消息标识为ID1、ID2或ID3,则可将该待分发弹幕消息的广播发送动作描述确定为“android.danmu.Class1.message”。当总数量小于消息数量阈值时,根据待分发弹幕消息的消息标识确定广播发送动作描述。例如,待分发弹幕消息的消息标识为ID1,则可将该待分发弹幕消息的广播发送动作描述确定为“android.danmu.ID1.message”。
示例性地,系统广播接收器注册注解通过调用预定义的注解处理器中的注解处理函数,在程序编译期间,将对应的弹幕分发对象预先注册为系统广播接收器;注解处理函数通过如下步骤实现在程序编译期间将对应的弹幕分发对象预先注册为系统广播接收器的功能:通过调用文件对象中的文件写入对象创建函数,构建文件写入对象,文件对象通过文件创建函数预先创建;将文件写入对象转换为缓存写入对象;以弹幕分发对象标识及广播接收动作描述为函数输入参数,调用缓存写入对象中的写入函数,将系统广播接收器注册代码写入Android系统的应用描述文件,应用描述文件在编译期间被调用。
其中,注解处理器是一个java语言编程编译器(java compiler,javac)工具,用于在程序编译时对注解进行扫描和处理。一个注解处理器以Java代码或者编译过的字节码作为输入,生成文件(通常是java文件)。这些生成的java文件不能修改,并且会同其手动编写的java代码一样被javac编译。也就是说,注解处理器的输入为标记了注解的类或变量等,经过注解处理器处理,自动生成对应的java代码。本实施例中注解处理器的输入便是包含了系统广播接收器注册注解的弹幕分发对象,输出便是系统广播接收器自动注册的java文件,该java文件包含了系统广播接收器自动注册的注册代码,且注册代码是自动生成,而非人工编程。注解处理函数是注解处理器中具体执行注解处理的函数。弹幕分发对象标识是指能够表征弹幕分发对象的标识,其可以是弹幕分发对象的名称或简称。应用描述文件是指Android系统中的Android应用描述符,其用于描述Android系统中的应用具有哪些特点,应用描述文件在编译期间被调用及解析。
具体地,为了提高注解的执行效率,从而进一步提高弹幕消息分发的速率,本发明实施例中将实现注解的注解处理函数设定为文件自动写入的执行过程。系统广播接收器注册注解的实现过程为:预先通过继承Android系统的抽象解析器AbstractProcessor,定义注解处理器ReceiveAbstractProcessor,注解处理器ReceiveAbstractProcessor中包含注解处理函数process,该注解处理函数process用于程序编译期间对注解进行扫描及处理。
注解处理函数process的实现过程具体为:首先通过调用文件创建函数new File(),对Android系统的应用描述文件进行新建或打开操作,代码实现可以为:File file=new File(“AndroidManifest.xml”),也就是如果系统中没有应用描述文件AndroidManifest.xml,则新建该文件,如果系统中已经存在该文件,则直接打开文件。然后,通过调用文件对象file中的文件写入对象创建函数FileWriter(),构建文件写入对象FileWriter,代码实现可以为:FileWriter fileWriter=new FileWriter(file)。之后,以文件写入对象FileWriter为函数输入参数,通过调用缓存写入对象创建函数BufferedWriter(),将文件写入对象FileWriter转换为缓存写入对象bufferedWriter,代码实现可以为:BufferedWriter bufferedWriter=new BufferedWriter(fileWriter),该缓存写入对象bufferedWriter具有缓存写入文件的功能。最后,以弹幕分发对象标识(例如“***View”)及广播接收动作描述(例如“android.danmu.message”)为函数输入参数,调用缓存写入对象bufferedWriter中的写入函数writer,将系统广播接收器注册代码写入Android系统的应用描述文件AndroidManifest.xml。通过上述的执行过程,可以实现在编译期间将如下的系统广播接收器注册代码自动写入应用描述文件AndroidManifest.xml,并通过编译期间对应用描述文件AndroidManifest.xml的解析,将弹幕分发对象自动注册为系统广播接收器。
Figure BDA0001716832420000131
S140、目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。
其中,广播接收函数为弹幕分发对象中预先定义的函数。是广播接收器中用于接收广播消息的函数,其在接收到广播消息时自动触发执行。本发明实施例中广播接收函数在弹幕分发对象中预先定义,其定义为Public void onReceive(Context context,Intentintent),其具有公有权项修饰符,且函数返回值类型为无类型,其包含数据类型为上下文环境对象类型及意图对象类型的两个函数参数。
具体地,弹幕分发对象接收到作为广播消息的广播意图对象之后,自动触发调用广播接收函数,接收到广播意图对象。之后,通过对该广播意图对象的解析,获得其中包含的待分发弹幕消息。
参见图3,通过本发明实施例中的弹幕消息分发方法,弹幕消息301可以直接通过基于系统广播机制进行弹幕消息分发的注解式广播分发器302发送至需要接收弹幕消息的视图中,即位于第三视图层305中的视图,而无需经过中间的第一视图层303和第二视图层304。
本实施例的技术方案,通过广播发布模块依据待分发弹幕消息及其对应的广播发送动作描述,构建广播意图对象,并将该广播意图对象进行系统广播,使得待分发弹幕消息以系统广播消息的方式进行全局分发。通过为弹幕分发对象设置对应的系统广播接收器注册注解,将弹幕分发对象在程序编译期间,预先注册为能够接收其需求弹幕消息的系统广播接收器,使得弹幕分发对象能够直接接收基于Android系统广播机制而分发的弹幕消息,为弹幕消息的直达式分发提供基础,同时使得弹幕消息的广播式分发具有更强的针对性,能够减少弹幕分发对象中无用消息的接收,提高弹幕分发对象的消息处理效率。通过广播处理模块依据广播意图对象和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将广播意图对象发送至至少一个目标弹幕分发对象;目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。实现了基于Android系统广播机制,将弹幕消息直达式分发至音视频播放/直播应用软件中与待分发弹幕消息对应的各个弹幕分发对象,简化了弹幕消息分发流程,提高了弹幕消息的分发有效性及分发效率。
实施例二
本实施例在上述实施例一的基础上,对“广播发布模块依据待分发弹幕消息及广播发送动作描述,构建广播意图对象”进行了进一步优化。在此基础上,可以进一步对“广播发布模块广播广播意图对象”进行优化。在上述基础上,还可以进一步对“广播处理模块依据广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象”进行优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的弹幕消息分发方法包括:
S201、广播发布模块依据待分发弹幕消息确定与待分发弹幕消息对应的广播发送动作描述。
S202、广播发布模块以广播发送动作描述为函数输入参数,调用预先构建的初始意图对象的广播动作设置函数,为初始意图对象设置动作描述,获得中间意图对象。
其中,初始意图对象是指最初定义的意图对象,其内未进行数据的填充。示例性地,通过Android系统的意图对象构造函数,预先构建初始意图对象,代码实现可以为Intent intent=new Intent()。广播动作设置函数是指设置意图对象中动作action的函数。中间意图对象指设置了动作描述的意图对象,其对应于初始意图对象。
具体地,广播发布模块以广播发送动作描述android.danmu.message为函数输入参数,调用初始意图对象的广播动作设置函数setAction,将广播发送动作描述设置为初始意图对象的动作描述,其代码实现可以为:intent.setAction(“android.danmu.message”),获得中间意图对象。
S203、广播发布模块依据待分发弹幕消息,调用预先构建的初始数据包裹器对象的数据存储函数,将待分发弹幕消息对应的消息标识和消息体对象存储至初始数据包裹器对象,获得目标数据包裹器对象。
其中,数据包裹器对象是Android开发中的一个用于存储数据的数据容器类,其用于Android系统中组件之间的数据传输。本实施例中的数据包裹器对象中存储待分发弹幕消息。初始数据包裹器对象是指最初定义的数据包裹器对象,其内未进行数据的填充。示例性地,通过Android系统的数据包裹器对象构造函数,预先构建初始数据包裹器对象mBundle,代码实现可以为Bundle mBundle=new Bundle()。目标数据包裹器对象与初始数据包裹器对象相对应,其是指填充了数据的数据包裹器对象。数据存储函数是数据包裹器对象中对其进行数据填充的函数。消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该消息标识应当是一条弹幕消息的唯一的、全局的标识。消息体对象是指弹幕消息的承载者,其内包含具体地弹幕消息内容。
具体地,广播发布模块对待分发弹幕消息进行解析,获得其对应的消息标识type和消息体对象msg。之后,分别调用初始数据包裹器对象中的不同数据类型对应的数据存储函数,将相应的消息标识和消息体对象存储至初始数据包裹器对象。具体实施时,调用初始数据包裹器对象中的字符串类型数据存储函数,将消息标识type存储至初始数据包裹器对象,代码实现可以是mBundle.setString(type)。同样地,调用初始数据包裹器对象中的序列化类型数据存储函数,将消息体对象对应的序列化数据内容存储至初始数据包裹器对象,代码实现可以是mBundle.setSerializable(msg)。这样,就获得了填充弹幕消息之后的目标数据包裹器对象mBundle。
S204、广播发布模块以目标数据包裹器对象为函数输入参数,调用中间意图对象的数据包设置函数,将目标数据包裹器对象存储至中间意图对象,获得广播意图对象。
其中,数据包设置函数是指意图对象中为意图对象设置数据data的函数。
具体地,要获得广播意图对象,还需将具体的广播消息数据填充至中间意图对象。具体实施时,广播发布模块以上述获得的目标数据包裹器对象mBundle为函数输入参数,调用中间意图对象的数据包设置函数setBundle(),将目标数据包裹器对象存储至中间意图对象,代码实现可以为intent.setBundle(mBundle)。这样,就获得了包含广播发送动作描述和待分发弹幕消息的广播意图对象。
S205、广播发布模块调用应用程序类的上下文环境获取函数,获取Android系统的上下文环境对象。
其中,应用程序类Application是Android系统开发方提供的一个系统类,其用于应用程序开发过程,开发一个应用程序时会实现一个application类的实例化。上下文环境对象是一个抽象类,并且Android系统提供了类的实现,通过上下文环境对象允许访问应用程序特定的资源和类。
具体地,广播发布模块通过调用Android系统中的应用程序类Application中的上下文环境获取函数getApplicationContext来获取到系统提供的上下文环境对象mContext。
S206、广播发布模块通过上下文环境对象,以广播意图对象为函数输入参数,调用广播发送函数,广播广播意图对象。
具体地,广播发布模块以广播意图对象intent为函数输入参数,调用上下文环境对象mContext中的广播发送函数sendBroadcast(),即mContext.sendBroadcast(intent),将广播意图对象作为系统广播消息进行广播。这样,包含待分发弹幕消息的广播意图对象便被发送到Android系统事件总线上。
S207、广播处理模块确定一个弹幕分发对象为当前弹幕分发对象。
具体地,广播处理模块从所有包含了系统广播接收器注册注解的弹幕分发对象中,选择一个弹幕分发对象,作为当前弹幕分发对象,开始筛选目标弹幕分发对象的操作。
S208、广播处理模块依据当前弹幕分发对象对应的当前系统广播接收器注册注解,确定至少一个当前广播接收动作描述。
具体地,广播处理模块从当前弹幕分发对象中包含的系统广播接收器注册注解(即当前系统广播接收器注册注解)对应的自动生成的注册代码中,获取当前弹幕分发对象对应的至少一个广播接收动作描述(即当前广播接收动作描述)。
S209、广播处理模块确定至少一个当前广播接收动作描述中是否存在广播发送动作描述。
具体地,广播处理模块将广播发送动作描述与至少一个当前广播接收动作描述中的每一个当前广播接收动作描述进行比较,以判断至少一个当前广播接收动作描述中是否存在与广播发送动作描述一致的动作描述。若是,则执行S210;若否,则说明当前弹幕分发对象不需接收待分发弹幕消息,其不是目标弹幕分发对象,那么接收本次操作,执行S211。
S210、广播处理模块将当前弹幕分发对象确定为目标弹幕分发对象。
具体地,至少一个当前广播接收动作描述中存在与广播发送动作描述一致的动作描述,说明当前弹幕分发对象需要接收待分发弹幕消息,则将当前弹幕分发对象确定为一个目标弹幕分发对象,并执行S211。
S211、广播处理模块将下一个弹幕分发对象更新为当前弹幕分发对象,并返回执行依据当前弹幕分发对象对应的当前系统广播接收器注册注解,确定至少一个当前广播接收动作描述的步骤,直至遍历完所有的弹幕分发对象。
具体地,广播处理模块将多个弹幕分发对象中与当前弹幕分发对象相邻的下一个弹幕分发对象作为新的当前弹幕分发对象,返回执行S208及其后续步骤,以完成对弹幕分发对象的遍历,确定出至少一个目标弹幕分发对象。
S212、目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。
示例性地,广播接收函数通过如下步骤实现依据广播意图对象获取待分发弹幕消息的功能:通过广播意图对象,调用数据包获取函数,获得目标数据包裹器对象;调用目标数据包裹器对象的数据获取函数,获取待分发弹幕消息的消息标识和消息体对象。
其中,数据包获取函数是指从意图对象中获取数据包裹器对象的函数。数据获取函数是指从数据包裹器对象中获取其内包含的数据的函数。
具体地,广播接收函数被触发后,其会获得广播意图对象,之后需要对该广播意图对象进行解析,以获得其内包含的待分发弹幕消息。具体过程为:广播接收函数调用广播意图对象中的数据包获取函数intent.getBundle(),获得广播意图对象中包含的目标数据包裹器对象mBundle。之后,广播接收函数分别调用目标数据包裹器对象的字符串类型数据获取函数mBundle.getString(type)和序列化类型数据获取函数mBundle.getSerializable(msg),获得待分发弹幕消息对应的消息标识type和消息体对象msg。这样,弹幕分发对象便获得了待分发弹幕消息的具体消息内容。
本实施例的技术方案,通过将待分发弹幕消息和广播发送动作描述构建为目标数据包裹器对象,并进一步构建为广播意图对象;弹幕分发对象通过广播接收函数获取广播意图对象中的目标数据包裹器对象,并进一步获得待分发弹幕消息,保证了弹幕消息作为广播消息传输的完整性与便捷性,进一步提高了弹幕消息的分发效率。通过逐个地将广播发送动作描述与弹幕分发对象的系统广播接收器注册注解对应的至少一个广播接收动作描述进行比较分析,能够以更易理解的方式确定目标弹幕分发对象,进一步降低应用软件开发难度,提高应用软件开发效率。
以下是本发明实施例提供的弹幕消息分发装置的实施例,该装置与上述各实施例的弹幕消息分发方法属于同一个发明构思,在弹幕消息分发装置的实施例中未详尽描述的细节内容,可以参考上述弹幕消息分发方法的实施例。
实施例三
本实施例提供一种弹幕消息分发装置,参见图5,该装置具体包括:
广播发布模块510,用于依据待分发弹幕消息确定与待分发弹幕消息对应的广播发送动作描述;依据待分发弹幕消息及广播发送动作描述,构建广播意图对象,并广播广播意图对象;
广播处理模块520,用于依据广播发布模块510确定的广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将广播意图对象发送至至少一个目标弹幕分发对象,其中,系统广播接收器注册注解包含至少一个广播接收动作描述,广播接收器注册注解为弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的弹幕分发对象预先注册为系统广播接收器;
弹幕消息接收模块530,用于广播处理模块520确定的目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。
可选地,在上述装置的基础上,该装置还包括广播接收动作描述确定模块,用于通过如下步骤预先确定广播接收动作描述:
依据弹幕分发对象对应的至少一个消息标识或至少一个消息类型,确定弹幕分发对象对应的至少一个广播接收动作描述。
相应地,广播发布模块510具体用于:
依据待分发弹幕消息对应的消息标识或消息类型,确定广播发送动作描述。
可选地,在上述装置的基础上,该装置还包括:广播接收器注册模块,用于:
系统广播接收器注册注解通过调用预定义的注解处理器中的注解处理函数,在程序编译期间,将对应的弹幕分发对象预先注册为系统广播接收器;
注解处理函数通过如下步骤实现在程序编译期间将对应的弹幕分发对象预先注册为系统广播接收器的功能:
通过调用文件对象中的文件写入对象创建函数,构建文件写入对象,文件对象通过文件创建函数预先创建;
将文件写入对象转换为缓存写入对象;
以弹幕分发对象标识及广播接收动作描述为函数输入参数,调用缓存写入对象中的写入函数,将系统广播接收器注册代码写入Android系统的应用描述文件,应用描述文件在编译期间被调用。
可选地,广播处理模块520具体用于:
确定一个弹幕分发对象为当前弹幕分发对象;
依据当前弹幕分发对象对应的当前系统广播接收器注册注解,确定至少一个当前广播接收动作描述;
确定至少一个当前广播接收动作描述中是否存在广播发送动作描述;
若存在,则将当前弹幕分发对象确定为目标弹幕分发对象;
若不存在,则将下一个弹幕分发对象更新为当前弹幕分发对象,并返回执行依据当前弹幕分发对象对应的当前系统广播接收器注册注解,确定至少一个当前广播接收动作描述的步骤,直至遍历完所有的弹幕分发对象。
可选地,广播发布模块510具体用于:
广播发布模块以广播发送动作描述为函数输入参数,调用预先构建的初始意图对象的广播动作设置函数,为初始意图对象设置动作描述,获得中间意图对象;
广播发布模块依据待分发弹幕消息,调用预先构建的初始数据包裹器对象的数据存储函数,将待分发弹幕消息对应的消息标识和消息体对象存储至初始数据包裹器对象,获得目标数据包裹器对象;
广播发布模块以目标数据包裹器对象为函数输入参数,调用中间意图对象的数据包设置函数,将目标数据包裹器对象存储至中间意图对象,获得广播意图对象。
可选地,广播发布模块510还具体用于:
广播发布模块调用应用程序类的上下文环境获取函数,获取Android系统的上下文环境对象;
广播发布模块通过上下文环境对象,以广播意图对象为函数输入参数,调用广播发送函数,广播广播意图对象。
可选地,弹幕消息接收模块530还包括广播接收函数执行子模块,用于通过如下步骤实现依据广播意图对象获取待分发弹幕消息的功能:
通过广播意图对象,调用数据包获取函数,获得目标数据包裹器对象;
调用目标数据包裹器对象的数据获取函数,获取待分发弹幕消息的消息标识和消息体对象。
通过本发明实施例三的一种弹幕消息分发装置,实现了音视频播放/直播应用软件中弹幕消息的直达式分发,使得各个弹幕分发目标能够直接获得其关注的弹幕消息,提高了弹幕消息的分发有效性和分发效率。
本发明实施例所提供的弹幕消息分发装置可执行本发明任意实施例所提供的弹幕消息分发方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述弹幕消息分发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
参见图6,本实施例提供了一种设备600,其包括:一个或多个处理器620;存储装置610,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器620执行,使得一个或多个处理器620实现本发明实施例所提供的弹幕消息分发方法,包括:
广播发布模块依据待分发弹幕消息确定与待分发弹幕消息对应的广播发送动作描述;
广播发布模块依据待分发弹幕消息及广播发送动作描述,构建广播意图对象,并广播广播意图对象;
广播处理模块依据广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将广播意图对象发送至至少一个目标弹幕分发对象,其中,系统广播接收器注册注解包含至少一个广播接收动作描述,广播接收器注册注解为弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的弹幕分发对象预先注册为系统广播接收器;
目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。
当然,本领域技术人员可以理解,处理器620还可以实现本发明任意实施例所提供的弹幕消息分发方法的技术方案。
图6显示的设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,该设备600包括处理器620、存储装置610、输入装置630和输出装置640;设备中处理器620的数量可以是一个或多个,图6中以一个处理器620为例;设备中的处理器620、存储装置610、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线650连接为例。
存储装置610作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的弹幕消息分发方法对应的程序指令/模块(例如,弹幕消息分发装置中的广播发布模块、广播处理模块和弹幕消息接收模块)。
存储装置610可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置610可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置610可进一步包括相对于处理器620远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
实施例五
本实施例提供一种包含计算机可执行指令的存储介质,该计算机可执行指令在由计算机处理器执行时用于执行一种弹幕消息分发方法,该方法包括:
广播发布模块依据待分发弹幕消息确定与待分发弹幕消息对应的广播发送动作描述;
广播发布模块依据待分发弹幕消息及广播发送动作描述,构建广播意图对象,并广播广播意图对象;
广播处理模块依据广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将广播意图对象发送至至少一个目标弹幕分发对象,其中,系统广播接收器注册注解包含至少一个广播接收动作描述,广播接收器注册注解为弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的弹幕分发对象预先注册为系统广播接收器;
目标弹幕分发对象调用广播接收函数,接收广播意图对象,并依据广播意图对象获取待分发弹幕消息。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的弹幕消息分发方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的弹幕消息分发方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种弹幕消息分发方法,其特征在于,包括:
广播发布模块依据待分发弹幕消息确定与所述待分发弹幕消息对应的广播发送动作描述;
所述广播发布模块依据所述待分发弹幕消息及所述广播发送动作描述,构建广播意图对象,并广播所述广播意图对象;
广播处理模块依据所述广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将所述广播意图对象发送至至少一个所述目标弹幕分发对象,其中,所述系统广播接收器注册注解包含至少一个广播接收动作描述,所述广播接收器注册注解为所述弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的所述弹幕分发对象预先注册为系统广播接收器;
所述目标弹幕分发对象调用广播接收函数,接收所述广播意图对象,并依据所述广播意图对象获取所述待分发弹幕消息。
2.根据权利要求1所述的方法,其特征在于,所述广播接收动作描述通过如下步骤预先确定:
依据所述弹幕分发对象对应的至少一个消息标识或至少一个消息类型,确定所述弹幕分发对象对应的至少一个所述广播接收动作描述;
相应地,所述广播发布模块依据待分发弹幕消息确定与所述待分发弹幕消息对应的广播发送动作描述包括:
所述广播发布模块依据待分发弹幕消息对应的所述消息标识或所述消息类型,确定所述广播发送动作描述。
3.根据权利要求1所述的方法,其特征在于,所述系统广播接收器注册注解通过调用预定义的注解处理器中的注解处理函数,在程序编译期间,将对应的所述弹幕分发对象预先注册为所述系统广播接收器;
所述注解处理函数通过如下步骤实现所述在程序编译期间将对应的所述弹幕分发对象预先注册为所述系统广播接收器的功能:
通过调用文件对象中的文件写入对象创建函数,构建文件写入对象,所述文件对象通过文件创建函数预先创建;
将所述文件写入对象转换为缓存写入对象;
以弹幕分发对象标识及所述广播接收动作描述为函数输入参数,调用所述缓存写入对象中的写入函数,将系统广播接收器注册代码写入Android系统的应用描述文件,所述应用描述文件在编译期间被调用。
4.根据权利要求1所述的方法,其特征在于,所述广播处理模块依据所述广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象包括:
所述广播处理模块确定一个所述弹幕分发对象为当前弹幕分发对象;
所述广播处理模块依据所述当前弹幕分发对象对应的当前系统广播接收器注册注解,确定至少一个当前广播接收动作描述;
所述广播处理模块确定至少一个所述当前广播接收动作描述中是否存在所述广播发送动作描述;
若存在,则所述广播处理模块将所述当前弹幕分发对象确定为所述目标弹幕分发对象;
若不存在,则所述广播处理模块将下一个所述弹幕分发对象更新为当前弹幕分发对象,并返回执行所述依据所述当前弹幕分发对象对应的当前系统广播接收器注册注解,确定至少一个当前广播接收动作描述的步骤,直至遍历完所有的所述弹幕分发对象。
5.根据权利要求1所述的方法,其特征在于,所述广播发布模块依据所述待分发弹幕消息及所述广播发送动作描述,构建广播意图对象包括:
所述广播发布模块以所述广播发送动作描述为函数输入参数,调用预先构建的初始意图对象的广播动作设置函数,为所述初始意图对象设置动作描述,获得中间意图对象;
所述广播发布模块依据所述待分发弹幕消息,调用预先构建的初始数据包裹器对象的数据存储函数,将所述待分发弹幕消息对应的消息标识和消息体对象存储至所述初始数据包裹器对象,获得目标数据包裹器对象;
所述广播发布模块以所述目标数据包裹器对象为函数输入参数,调用所述中间意图对象的数据包设置函数,将所述目标数据包裹器对象存储至所述中间意图对象,获得所述广播意图对象。
6.根据权利要求1所述的方法,其特征在于,所述广播发布模块广播所述广播意图对象包括:
所述广播发布模块调用应用程序类的上下文环境获取函数,获取Android系统的上下文环境对象;
所述广播发布模块通过所述上下文环境对象,以所述广播意图对象为函数输入参数,调用广播发送函数,广播所述广播意图对象。
7.根据权利要求5所述的方法,其特征在于,所述广播接收函数通过如下步骤实现所述依据所述广播意图对象获取所述待分发弹幕消息的功能:
通过所述广播意图对象,调用数据包获取函数,获得所述目标数据包裹器对象;
调用所述目标数据包裹器对象的数据获取函数,获取所述待分发弹幕消息的所述消息标识和所述消息体对象。
8.一种弹幕消息分发装置,其特征在于,包括:
广播发布模块,用于依据待分发弹幕消息确定与所述待分发弹幕消息对应的广播发送动作描述;依据所述待分发弹幕消息及所述广播发送动作描述,构建广播意图对象,并广播所述广播意图对象;
广播处理模块,用于依据所述广播发送动作描述和弹幕分发对象对应的系统广播接收器注册注解,确定至少一个目标弹幕分发对象,并将所述广播意图对象发送至至少一个所述目标弹幕分发对象,其中,所述系统广播接收器注册注解包含至少一个广播接收动作描述,所述广播接收器注册注解为所述弹幕分发对象中预先定义的编译时注解,用于在程序编译期间将对应的所述弹幕分发对象预先注册为系统广播接收器;
弹幕消息接收模块,用于所述目标弹幕分发对象调用广播接收函数,接收所述广播意图对象,并依据所述广播意图对象获取所述待分发弹幕消息。
9.一种电子设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的弹幕消息分发方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的弹幕消息分发方法。
CN201810711994.6A 2018-06-29 2018-06-29 弹幕消息分发方法、装置、设备及存储介质 Active CN108882053B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810711994.6A CN108882053B (zh) 2018-06-29 2018-06-29 弹幕消息分发方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810711994.6A CN108882053B (zh) 2018-06-29 2018-06-29 弹幕消息分发方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN108882053A CN108882053A (zh) 2018-11-23
CN108882053B true CN108882053B (zh) 2021-04-09

Family

ID=64297759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810711994.6A Active CN108882053B (zh) 2018-06-29 2018-06-29 弹幕消息分发方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN108882053B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857637B (zh) * 2018-12-25 2022-04-15 杭州茂财网络技术有限公司 基于注解的Java语言方法覆盖率和方法输入输出统计方法
CN110096380B (zh) * 2019-05-08 2020-07-07 苏州浪潮智能科技有限公司 Android内部通讯方法、系统、装置及存储介质
CN113254838B (zh) * 2021-06-18 2021-10-01 每日互动股份有限公司 一种基于网状级联的消息分发方法、电子设备及介质
CN114500535B (zh) * 2022-01-21 2024-07-19 北京百度网讯科技有限公司 一种消息处理方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016095384A1 (zh) * 2014-12-19 2016-06-23 中兴通讯股份有限公司 一种弹幕显示方法及系统
CN107391218A (zh) * 2017-07-07 2017-11-24 北京小米移动软件有限公司 编译方法及装置、电子设备和计算机可读存储介质
CN107450922A (zh) * 2017-07-27 2017-12-08 武汉斗鱼网络科技有限公司 安卓中弹幕事件自动注册的方法、存储介质、设备及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016095384A1 (zh) * 2014-12-19 2016-06-23 中兴通讯股份有限公司 一种弹幕显示方法及系统
CN107391218A (zh) * 2017-07-07 2017-11-24 北京小米移动软件有限公司 编译方法及装置、电子设备和计算机可读存储介质
CN107450922A (zh) * 2017-07-27 2017-12-08 武汉斗鱼网络科技有限公司 安卓中弹幕事件自动注册的方法、存储介质、设备及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《我来"广播"你的"意图"——Intent和Bro...》;cateatmycode;《madfrag博客》;https://www.cnblogs.com/mumue/archive/2012/05/14/2500653.html;20120514;2-4 *

Also Published As

Publication number Publication date
CN108882053A (zh) 2018-11-23

Similar Documents

Publication Publication Date Title
CN108882053B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN109766253B (zh) 一种性能数据发送方法、装置、计算机设备及存储介质
CN109618176B (zh) 一种直播业务的处理方法、设备和存储介质
CN113615141B (zh) 账号关联方法、装置、系统、服务器以及存储介质
CN108462894B (zh) 直播间广播处理方法、装置及可读存储介质
CN109005468B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN110324722B (zh) 直播间中数据的获取方法、装置、设备和存储介质
CN109062650B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN109302639B (zh) 一种弹幕消息的分发方法、装置、终端和存储介质
CN113722114A (zh) 一种数据服务的处理方法、装置、计算设备及存储介质
CN109388388B (zh) 功能模块间的信息交互方法、装置、设备及存储介质
CN108924653B (zh) 弹幕消息分发方法、装置、设备和存储介质
KR101597843B1 (ko) 기능 레벨들을 어드레싱하는 컨텐츠 관리
CN109274988B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN109413507B (zh) 弹幕库与直播间引用关系的处理方法、装置、终端和介质
CN111427710A (zh) 应用程序中组件的通信方法、装置、设备及存储介质
CN109005448B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN108810644B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN108881991B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN109086107B (zh) 弹幕消息分发方法、装置、设备及存储介质
CN115061785A (zh) 信息下发方法、装置、存储介质及服务器
CN108966035B (zh) 弹幕消息传输方法、装置、设备与存储介质
CN109413498B (zh) 一种弹幕消息的分发方法、装置、终端和存储介质
CN114610343A (zh) 一种应用功能实现方法、装置、计算机设备及存储介质
CN113472903B (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