CN115314584A - 一种音频播放方法、装置和设备 - Google Patents
一种音频播放方法、装置和设备 Download PDFInfo
- Publication number
- CN115314584A CN115314584A CN202110497072.1A CN202110497072A CN115314584A CN 115314584 A CN115314584 A CN 115314584A CN 202110497072 A CN202110497072 A CN 202110497072A CN 115314584 A CN115314584 A CN 115314584A
- Authority
- CN
- China
- Prior art keywords
- audio
- management module
- virtual
- screen
- application
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 117
- 238000005266 casting Methods 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 44
- 230000007246 mechanism Effects 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 41
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 16
- 230000004044 response Effects 0.000 description 9
- 238000010295 mobile communication Methods 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 7
- 238000009826 distribution Methods 0.000 description 7
- 230000011664 signaling Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 101150053844 APP1 gene Proteins 0.000 description 2
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 2
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 1
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/162—Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/165—Management of the audio stream, e.g. setting of volume, audio stream path
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72409—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72409—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
- H04M1/72412—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories using two-way short-range wireless interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/7243—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality with interactive means for internal management of messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72442—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality for playing music files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
- H04N21/43632—Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wired protocol, e.g. IEEE 1394
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
- H04N21/43637—Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/439—Processing of audio elementary streams
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- General Business, Economics & Management (AREA)
- Business, Economics & Management (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请公开了一种音频播放方法、装置和系统,所述方法包括:当终端设备启动投屏业务时,第一管理模块接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,第一请求中包括用户期望投屏的第一设备的相关信息,所述第一管理模块向硬件抽象层HAL发送所述第一请求;接收所述HAL发送的第一虚拟音频设备的设备标识,第一管理模块向投屏业务模块发送第一虚拟音频设备的设备标识,以使投屏业务模块建立虚拟显示屏和第一虚拟音频设备之间的绑定关系。本方法增强现有投屏场景音频输入输出能力,使得虚拟显示屏运行应用时,音频流跟随投屏端音频设备输入输出,实现一对多投屏场景下,每个投屏设备显示音频互相独立,互不干扰。
Description
技术领域
本申请涉及媒体播放领域,尤其是涉及一种音频播放方法、装置和设备。
背景技术
当前安卓(Android)手机终端可以通过通用串行总线(universal serial bus,USB)线或无线保真(WiFi)实现手机对不同终端投屏。比如手机通过USB显示端口(DisplayPort,DP)接口将手机上显示的音频/视频内容投屏到其他终端设备上,或者通过Miracast或厂商多屏协同功能实现手机对平板电脑、个人计算机(personal computer,PC)、大屏显示器等设备投屏。
通常Android终端的投屏业务大都是采用安卓虚拟投屏(AndroidVirtualDisplay)技术,手机终端具备构建多个虚拟显示屏(display)的能力。随着后续投屏技术的发展,手机终端可以作为多设备投屏服务端,实现一对多设备的投屏业务,并且不同设备中每个设备对应一个虚拟display。例如,手机通过USB DP接口投屏一个显示屏终端,同时该手机还通过多屏协同功能投屏到另一终端设备,比如智慧屏,从而满足用户A可以利用显示屏终端通过手机进行办公,同时还可以将手机投屏到智慧屏,满足家庭用户B的娱乐需求。
如图1所示,用户手持手机,该手机通过USB DP线连接到带扬声器显示屏,比如笔记本电脑进入办公模式,同时手机还可以投屏到智慧屏播放视频或语音通话,当前这类并发投屏场景下,由于Android是多任务系统,音频(Audio)系统是竞争资源,应用遵守Android音频焦点的调用机制,在播放音频前需要先去系统侧申请焦点,只有申请获得焦点的应用才能播放音频,一旦失去焦点,则暂停播放。如果遵守该音频焦点的调用机制,则在图1所示的场景中,手机声音只能在一个投屏设备上发声,比如默认选择在智慧屏上发声,则在笔记本电脑上将暂停发声,进而导致系统无法提供运行在不同display的音频播放类APP上同时发声,即当前Android音频系统同一时间只支持一个投屏设备上的声音播放,且仅对应一个播放应用发声,无法满足上述终端设备一对多的投屏场景中用户不同影音诉求。
发明内容
本申请提供了一种音频播放方法、装置和设备,用于解决虚拟display一对多路投屏场景下无法支持音频多路并发控制输入输出问题。具体地,本申请公开了以下技术方案:
第一方面,本申请提供了一种音频播放方法,该方法可应用于第一管理模块,所述方法包括:当终端设备启动投屏业务时,第一管理模块接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;所述第一管理模块向硬件抽象层HAL发送所述第一请求,接收所述HAL发送的第一虚拟音频设备的设备标识,所述第一虚拟音频设备根据所述第一设备的相关信息创建;所述第一管理模块向所述投屏业务模块发送所述第一虚拟音频设备的设备标识,以使所述投屏业务模块建立虚拟显示屏display和所述第一虚拟音频设备之间的绑定关系。
可选的,所述第一管理模块为应用框架层中的一个模块,比如多屏音频管理模块,或者为一种vendor音频拓展模块。
本方面提供的方法,增强现有投屏场景音频输入输出能力,第一管理模块为每个请求投屏的设备建立虚拟display,并基于虚拟display配置独立虚拟音频输入输出设备,建立虚拟display与虚拟音频设备之间的绑定关系,使得虚拟display运行应用时,音频流跟随投屏端音频设备输入输出,实现一对多投屏场景下,每个投屏设备显示音频互相独立,互不干扰。
另外,每个投屏设备运行应用播放声音,在当前投屏设备端发声,每个投屏设备显示运行应用录音可以使用当前投屏设备的录音功能进行录音,从而实现多任务音频设备并发发声和拾音。
结合第一方面,在第一方面的一种可能的实现方式中,还包括:所述第一管理模块接收所述投屏业务模块发送的第一绑定关系,所述第一绑定关系包括第一虚拟显示屏display和所述第一虚拟音频设备的设备标识之间的对应关系;当第一应用请求播放音频流时,所述第一管理模块确定第一虚拟display;根据所述第一虚拟display在所述第一绑定关系中查找第一虚拟音频设备的设备标识;向原生音频框架发送所述第一虚拟音频设备的设备标识,以使所述原生音频框架将对应的音频流通过所述第一虚拟音频设备输出到第一设备。
本实现方式中,通过预先获得第一虚拟显示屏display和第一虚拟音频设备的设备标识之间的第一绑定关系,从而在获取第一虚拟display时,可根据该第一绑定关系找到对应的第一虚拟音频设备的设备标识,以便将音频流通过所述第一虚拟音频设备传输至第一设备中,实现音频流在第一设备上播放。
结合第一方面,在第一方面的另一种可能的实现方式中,所述第一管理模块确定第一虚拟display,包括:第一管理模块获取第一应用的标识,向第二管理模块发送所述第一应用的标识;所述第一管理模块接收所述第二管理模块根据所述第一应用的标识确定的所述第一虚拟display。
结合第一方面,在第一方面的又一种可能的实现方式中,所述第一管理模块确定第一虚拟display之后,还包括:所述第一管理模块根据所述第一虚拟display确定第一音频焦点,所述第一音频焦点与所述第一虚拟display相对应;所述第一管理模块查询所述第一音频焦点的状态是否可用;如果是,则向所述原生音频框架发送所述第一音频焦点。本方式实现音频焦点的分发,用于为请求播放音频流的设备提供音频焦点。
结合第一方面,在第一方面的又一种可能的实现方式中,还包括:如果查询所述第一音频焦点的状态不可用,则确定占用所述第一音频焦点的应用为第二应用;所述第一管理模块向所述原生音频框架发送第一指示信息,所述第一指示信息用于通知所述原生音频框架所述第一音频焦点需要被所述第一应用占用;当接收到所述第二应用停止使用所述第一音频焦点的指示时,向所述原生音频框架发送所述第一音频焦点,以使所述第一应用获取所述第一音频焦点。
本实现方式中,当有两个应用申请同一音频焦点时,根据虚拟display音频焦点机制为第二应用分配相应的第一音频焦点,从而优化运行在不同虚拟display的应用音频焦点抢占机制,支持基于虚拟display的多任务音频并发控制。
结合第一方面,在第一方面的又一种可能的实现方式中,所述第一管理模块查询所述第一音频焦点的状态是否可用之前,还包括:所述第一管理模块获取第一虚拟display所关联的第一焦点管理记录,所述第一焦点管理记录中包括第一音频焦点的状态,其中所述第一音频焦点的状态包括空闲和使用,所述第一虚拟display唯一对应所述第一音频焦点。
所述第一管理模块查询所述第一音频焦点的状态是否可用,包括:所述第一管理模块在所述第一焦点管理记录查询所述第一音频焦点的状态是否为空闲。
结合第一方面,在第一方面的又一种可能的实现方式中,还包括:所述第一管理模块按照虚拟display音频焦点机制维护所述第一焦点管理记录;所述虚拟display音频焦点机制包括:在同一个虚拟display中有两个或两个以上应用,且所述两个或两个以上应用同时申请音频焦点时,按照高优先级业务应用抢占低优先级业务的应用,和,同等优先级的业务应用遵循后申请应用抢占先申请应用的规则。
本实现方式中,通过第一管理模块管理和记录每个音频焦点的状态,从而当有终端设备申请焦点时,可以为不同终端设备分配焦点,从而实现音频焦点的合理分配和使用,提高了音频焦点资源分发效率。
第二方面,本申请还提供一种音频播放方法,该方法应用于第二管理模块,所述方法包括:
第二管理模块接收投屏业务模块发送的第二请求,所述第二请求用于创建投屏的虚拟display,其中所述第二请求中包括;指定虚拟display名称、大小以及分辨率信息;所述第二管理模块根据所述指定虚拟display名称、大小以及分辨率信息创建第一虚拟display;所述第二管理模块向所述投屏业务模块发送所述第一虚拟display,以使所述虚拟投屏业务模块建立所述第一虚拟display和第一虚拟音频设备之间的第一绑定关系。
可选的,所述第二管理模块为应用框架层中的一个模块,比如多屏管理模块。
结合第二方面,在第二方面的一种可能的实现方式中,还包括:所述第二管理模块接收所述投屏业务模块发送的所述第一绑定关系;所述第二管理模块向所述第一管理模块发送所述第一绑定关系。
结合第二方面,在第二方面的另一种可能的实现方式中,还包括:当第一应用请求播放音频流时,所述第二管理模块获取第一应用的标识;所述第二管理模块根据所述第一应用的标识查找第一应用所属的第一虚拟display;所述第二管理模块向所述第一管理模块发送所述第一虚拟display。
结合第二方面,在第二方面的又一种可能的实现方式中,所述第二管理模块获取第一应用的标识,包括:所述第二管理模块在所述第一应用请求申请音频焦点时,接收所述第一管理模块发送的音频焦点请求,所述音频焦点请求中包括所述第一应用的标识。
结合第二方面,在第二方面的又一种可能的实现方式中,所述第二管理模块获取第一应用的标识,包括:所述第二管理模块在所述原生音频框架获取第一应用播放的音频流时,接收所述第一管理模块发送的所述第一应用的标识。
第三方面,本申请还提供一种音频播放方法,可应用于投屏业务模块,所述方法包括:投屏业务模块在获取用户启动投屏业务的操作时,获取第二管理模块创建的第一虚拟显示屏display;所述投屏业务模块在与期望投屏的第一设备建立虚拟音频链路后,向所述第一管理模块发送第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;所述投屏业务模块接收所述第一管理模块发送的第一虚拟音频设备的设备标识;建立第一绑定关系,所述第一绑定关系包括所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的对应关系;所述投屏业务模块向所述第一管理模块发送所述第一绑定关系。
本方面提供的方法,投屏业务模块根据接收的第一虚拟显示屏display和第一虚拟音频设备的设备标识,建立二者的绑定关系,从而为后续虚拟音频设备的选择以及音频流的分发提供便捷,使得虚拟display运行应用时,音频流跟随投屏端音频设备输入输出,实现一对多投屏场景下,每个投屏设备显示音频互相独立,互不干扰。
可选的,所述投屏业务模块可以是位于应用层的一个功能模块。比如投屏业务APP,或投屏业务APK包。
结合第三方面,在第三方面的一种可能的实现方式中,所述获取第二管理模块创建的第一虚拟显示屏display,包括:所述投屏业务模块向所述第二管理模块发送第二请求,所述第二请求用于请求所述第二管理模块创建虚拟display;所述投屏业务模块接收所述第二管理模块根据所述第二请求创建的所述第一虚拟display。
结合第三方面,在第三方面的另一种可能的实现方式中,还包括:当获取用户断开投屏业务的操作时,解除所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的第一绑定关系;所述投屏业务模块向所述第一管理模块发送第一消息,所述第一消息用于通知所述第一管理模块删除所述第一绑定关系。
第四方面,本申请还提供一种管理装置,该装置可应用于第一管理模块,所述第一管理模块包括:第一接收单元,用于当终端设备启动投屏业务时,接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;第一发送单元,用于向硬件抽象层HAL发送所述第一请求;所述第一接收单元,还用于接收所述HAL发送的第一虚拟音频设备的设备标识,所述第一虚拟音频设备根据所述第一设备的相关信息创建;所述第一发送单元,还用于向所述投屏业务模块发送所述第一虚拟音频设备的设备标识,以使所述虚拟投屏业务模块建立虚拟显示屏display和所述第一虚拟音频设备之间的绑定关系。
结合第四方面,在第四方面的一种可能的实现方式中,所述第一接收单元,还用于接收所述投屏业务模块发送的第一绑定关系,所述第一绑定关系包括第一虚拟显示屏display和所述第一虚拟音频设备的设备标识之间的对应关系;第一处理单元,用于当第一应用请求播放音频流时确定第一虚拟display,根据所述第一虚拟display在所述第一绑定关系中查找第一虚拟音频设备的设备标识;所述第一发送单元,还用于向原生音频框架发送所述第一虚拟音频设备的设备标识,以使所述原生音频框架将对应的音频流通过所述第一虚拟音频设备输出到第一设备。
结合第四方面,在第四方面的另一种可能的实现方式中,所述第一接收单元,还用于获取第一应用的标识;所述第一发送单元,还用于向第二管理模块发送所述第一应用的标识;所述第一接收单元,还用于接收所述第二管理模块根据所述第一应用的标识确定的所述第一虚拟display。
结合第四方面,在第四方面的又一种可能的实现方式中,所述第一处理单元,还用于根据所述第一虚拟display确定第一音频焦点,所述第一音频焦点与所述第一虚拟display相对应,查询所述第一音频焦点的状态是否可用;所述第一发送单元,还用于在所述第一处理单元查询所述第一音频焦点可用时,向所述原生音频框架发送所述第一音频焦点。
结合第四方面,在第四方面的又一种可能的实现方式中,所述第一处理单元,还用于在查询所述第一音频焦点的状态不可用时,确定占用所述第一音频焦点的应用为第二应用;所述第一发送单元,还用于向所述原生音频框架发送第一指示信息,所述第一指示信息用于通知所述原生音频框架所述第一音频焦点需要被所述第一应用占用;以及,当所述第一接收单元接收到所述第二应用停止使用所述第一音频焦点的指示时,向所述原生音频框架发送所述第一音频焦点,以使所述第一应用获取所述第一音频焦点。
结合第四方面,在第四方面的又一种可能的实现方式中,所述第一管理模块查询所述第一音频焦点的状态是否可用之前,还包括:所述第一处理单元,还用于获取第一虚拟Display所关联的第一焦点管理记录,以及在所述第一焦点管理记录查询所述第一音频焦点的状态是否为空闲。
其中,所述第一焦点管理记录中包括第一音频焦点的状态,所述第一音频焦点的状态包括空闲和使用,所述第一虚拟display唯一对应所述第一音频焦点。
结合第四方面,在第四方面的又一种可能的实现方式中,所述第一处理单元,还用于按照虚拟display音频焦点机制维护所述第一焦点管理记录;所述虚拟display音频焦点机制包括:在同一个虚拟display中有两个或两个以上应用,且所述两个或两个以上应用同时申请音频焦点时,按照高优先级业务应用抢占低优先级业务的应用,和,同等优先级的业务应用遵循后申请应用抢占先申请应用的规则。
第五方面,本申请还提供另一种管理装置,可应用于第二管理模块,所述第二管理模块包括:第二接收单元,用于接收投屏业务模块发送的第二请求,所述第二请求用于创建投屏的虚拟display,其中所述第二请求中包括;指定虚拟display名称、大小以及分辨率信息;第二处理单元,用于根据所述指定虚拟display名称、大小以及分辨率信息创建第一虚拟display;第二发送单元,用于向所述投屏业务模块发送所述第一虚拟display,以使所述虚拟投屏业务模块建立所述第一虚拟display和第一虚拟音频设备之间的第一绑定关系。
结合第五方面,在第五方面的一种可能的实现方式中,所述第二接收单元,还用于接收所述投屏业务模块发送的所述第一绑定关系;所述第二发送单元,还用于向所述第一管理模块发送所述第一绑定关系。
结合第五方面,在第五方面的另一种可能的实现方式中,所述第二接收单元,还用于当第一应用请求播放音频流时,所述第二管理模块获取第一应用的标识;所述第二处理单元,还用于根据所述第一应用的标识查找第一应用所属的第一虚拟display;所述第二发送单元,还用于向所述第一管理模块发送所述第一虚拟display。
结合第五方面,在第五方面的又一种可能的实现方式中,所述第二接收单元,还用于在所述第一应用请求申请音频焦点时,接收所述第一管理模块发送的音频焦点请求,所述音频焦点请求中包括所述第一应用的标识。
结合第五方面,在第五方面的又一种可能的实现方式中,所述第二接收单元,还用于在所述原生音频框架获取第一应用播放的音频流时,接收所述第一管理模块发送的所述第一应用的标识。
第六方面,本申请还提供一种应用装置,该应用装置可用是一种投屏业务模块,所述投屏业务模块包括:第三接收单元,用于在获取用户启动投屏业务的操作时,获取第二管理模块创建的第一虚拟显示屏display;第三发送单元,用于在与期望投屏的第一设备建立虚拟音频链路后,向所述第一管理模块发送第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;所述第三接收单元,还用于接收所述第一管理模块发送的第一虚拟音频设备的设备标识;第三处理单元,用于所述投屏业务模块建立第一绑定关系,所述第一绑定关系包括所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的对应关系;所述第三发送单元,还用于向所述第一管理模块发送所述第一绑定关系。
结合第六方面,在第六方面的一种可能的实现方式中,所述第三发送单元,还用于向所述第二管理模块发送第二请求,所述第二请求用于请求所述第二管理模块创建虚拟display;所述第三接收单元,还用于接收所述第二管理模块根据所述第二请求创建的所述第一虚拟display。
结合第六方面,在第六方面的另一种可能的实现方式中,所述第三处理单元,还用于当获取用户断开投屏业务的操作时,解除所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的第一绑定关系;所述第三接收单元,还用于向所述第一管理模块发送第一消息,所述第一消息用于通知所述第一管理模块删除所述第一绑定关系。
第七方面,本申请还提供一种终端设备,包括:至少一个处理器和存储器,其中,所述存储器,用于存储计算机程序指令和/或数据;所述至少一个处理器,用于执行所述指令,以实现前述第一方面至第三方面各种实现方式中的方法。
可选的,所述终端设备还包括接口电路,所述接口电路用于获取所述存储器中的计算机程序指令和/或数据。
可选的,所述至少一个处理器、存储器和所述接口电路可以集成在一个处理芯片或者芯片电路中。
可选的,所述装置为一种终端设备,所述终端设备包括但不限于手机、PC、平板电脑。
第八方面,本申请还提供了一种音频播放系统,所述系统包括源设备和至少一个投屏设备,其中,所述源设备为前述第七方面的终端设备,用于实现前述第一方面至第三方面的各种实现方式中的方法。另外,所述至少一个投屏设备也可以是前述第七方面中的终端设备。
可选的,所述系统中还可以包括其他设备,比如云端服务器、网络设备等。
第九方面,本申请还提供了一种计算机可读存储介质,该存储介质中存储有指令,使得当指令在计算机或处理器上运行时,可以用于执行前述第一方面以及第一方面各种实现方式中的方法,和,前述第二方面以及第二方面各种实现方式中的方法,以及,前述第三方面以及第三方面各种实现方式中的方法。
另外,本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,当该指令被计算机或处理器执行时,可实现前述第一方面以及第一方面各种实现方式中的方法,和,前述第二方面以及第二方面各种实现方式中的方法,以及,前述第三方面以及第三方面各种实现方式中的方法。
需要说明的是,上述第二方面至第九方面的各种实现方式的技术方案所对应的有益效果与前述第一方面以及第一方面的各种实现方式的有益效果相同,具体参见上述第一方面以及第一方面的各种实现方式中的有益效果描述,不再赘述。
附图说明
图1为本申请提供的一种手机终端投屏的场景示意图;
图2为本申请实施例提供的一种手机终端投屏业务的场景示意图;
图3为本申请实施例提供的一种终端设备的结构示意图;
图4为本申请实施例提供的一种终端设备的软件结构示意图;
图5为本申请实施例提供的一种音频播放方法的流程图;
图6为本申请实施例提供的另一种音频播放方法的流程图;
图7为本申请实施例提供的一种源设备投屏到两个投屏设备的结构示意图;
图8为本申请实施例提供的一种音频播放方法的信令流程图;
图9为本申请实施例提供的一种启动投屏流程的信令图;
图10为本申请实施例提供的一种断开投屏流程的信令图;
图11为本申请实施例提供的一种请求音频焦点的结构示意图;
图12为本申请实施例提供的一种应用获取音频焦点的信令流程图;
图13为本申请实施例提供的一种音频焦点抢占机制的信令流程图;
图14a为本申请实施例提供的一种音频流分发的示意图;
图14b为本申请实施例提供的一种播放音频流的信令流程图;
图15为本申请实施例提供的一种管理装置的结构示意图;
图16为本申请实施例提供的另一种管理装置的结构示意图;
图17为本申请实施例提供的应用装置的结构示意图;
图18为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中的技术方案作进一步详细的说明。
在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的应用场景进行说明。
本申请的技术方案可应用于手机设备一对多的投屏业务场景,基于Android虚拟显示屏(display)利用虚拟化技术构建分布式音频,实现多端投屏显示以及音频输入输出相互独立,支持音频并发发声和拾音。
在一种可能的场景中,例如图2所示,手机通过安卓虚拟投屏(AndroidVirtualDisplay)技术投屏到智慧屏、平板以及显示屏上,本申请通过为N个投屏设备中的每个设备设置虚拟display,且为每个虚拟display分配独立的虚拟音频设备,所述虚拟音频设备包括扬声器(speaker)、麦克风(microphone,MIC)以及其他输入(input)设备等,以及多屏音频并发管理控制,以便用户在使用投屏显示端时,可以获得独立的音频视频体验,使得每个显示端音频视频相互独立,互不干扰。
其中,所述手机还可以是其他终端设备,该终端设备可以是一种便携式设备,比如智能手机、平板电脑、笔记本电脑、个人计算机(personal computer,PC)、可折叠终端、具备无线通讯功能的可穿戴设备(例如智能手表或手环)、用户设备(user device)或用户设备(user equipment,UE)、以及增强现实(augmented reality,AR)或者虚拟现实(virtualreality,VR)设备、耳机等。此外,所述被投屏的设备也可以是上述终端设备中的任意一种或多种,本实施例对终端设备的具体设备形态不做限定。
另外,上述各种终端设备中搭载安卓(Android)操作系统和/或兼容安卓的系统。
本实施例中,将投屏的设备称为源设备,将用户期望投屏的设备称为投屏设备。比如图2中,源设备为手机终端,投屏设备包括智慧屏、平板和显示屏等任意一种终端设备。
可选的,上述应用场景中还可以包括云端侧,或云端网络设备,比如云服务器、数据中心等,且源设备与投屏设备之间通过无线网络,比如无线局域网(WirelessLocalAreaNetworks,WLAN)或WiFi等。
在一种实现方式中,上述终端设备可以包括以下结构,如图3所示,为本实施例提供的一种终端设备的结构示意图。该终端设备可以包括处理器110和存储器120,此外,还包括:USB接口130,电源管理模块140,电池141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键191,指示器192,摄像头193,显示屏194,以及用户标识模块(SubscriberIdentification Module,SIM)卡接口195等。
其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,加速度传感器180C,重力传感器180D,触摸传感器180E,另外,传感器模块180中还可以包括指纹传感器,温度传感器,环境光传感器等。
可以理解的是,本申请实施例示意的结构并不构成对通信装置的具体限定。在本申请另一些实施例中,通信装置可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用,避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或USB接口等。
其中,USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,MicroUSB接口,USB Type C接口等。USB接口130可以用于连接充电器为通信装置充电,也可以用于通信装置与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
电源管理模块140用于连接电池141与处理器110。电源管理模块140为处理器110,存储器120,显示屏194,摄像头193和无线通信模块160等供电。在一些实施例中,电源管理模块140可以设置于处理器110中。
终端设备的无线通信功能可以通过天线1、天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。通信装置中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块150可以提供应用在通信装置上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。
无线通信模块160可以提供应用在通信装置上的包括WLAN(如WiFi网络),蓝牙(bluetooth),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multipleaccess,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(LongTerm Evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigationsatellite system,GLONASS),北斗卫星导航系统(beidou navigation satellitesystem,BDS)。
显示屏194用于显示会话窗、显示界面、图像等。在一些实施例中,终端设备可以包括1个或N个显示屏,N为大于1的正整数。
存储器120可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。另外,还可以存储终端设备生成的或者与其他设备交互的数据/信息。
进一步地,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器120的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备的各种功能应用以及数据处理。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。陀螺仪传感器180B可以用于确定终端设备的运动姿态,比如测量终端设备的旋转角度。加速度传感器180C可检测终端设备在各个方向上(一般为三轴)加速度的大小。其中,加速度传感器180C中还包括线性加速度传感器,用于获得终端设备的线性加速度。重力传感器180D,用于测量终端设备在x轴、y轴和z轴方向上的加速度分量。触摸传感器180E,也称“触控器件”。触摸传感器180E可以设置于显示屏194,由触摸传感器180E与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180E用于检测作用于其上或附近的触摸操作,比如双击操作。
按键191包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和通信装置的接触和分离。
需要说明的是,上述云端侧或云端网络设备的结构可以与终端设备的结构相同,或者也可以不相同,本实施例对此不予限制。
另外,本实施例还提供一种终端设备的软件结构。以Android系统的终端设备为例,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。参见图4,在一些实施例中,所述终端设备的软件结构中Android系统从上至下分别为应用程序层(APP),应用程序框架层和硬件抽象层(HardwareAbstraction Layer,HAL),此外,在程序框架层和HAL层之间还包括安卓运行时(Android Runtime)和系统库(在图4中未示出)。
进一步地,在应用程序层可以包括一系列应用程序包,比如APP1,APP2,……。本实施例中包括投屏业务APP,所述投屏业务APP用于实现不同终端设备的投屏功能。
可选的,应用程序框架层简称为“框架层(Framework)”。
所述框架层为应用程序层的应用程序提供应用编程接口(ApplicationProgramming Interface,API)和编程框架。框架层包括一些预先定义的函数。
如图4所示,所述框架层中包括:安卓开源平台(Android open source platform,AOSP)原生音频框架、多屏管理(Multi-screen management)模块和供应商(Vendor)音频扩展功能模块。其中,所述Vendor音频扩展功能模块为新增的功能模块。
具体地,各个模块所包含的功能/作用如表1所示。
表1
所述多屏管理模块,针对主屏和虚拟屏管理模块,维护管理投屏业务使用Display信息。另外,多屏管理模块还关联音频框架,实现虚拟显示屏(Display)的创建、销毁以及虚拟音频设备配置管理等功能。
音频框架,包括AOSP原生音频框架和Vendor音频扩展功能,其中所述Vendor音频扩展功能为新增功能模块,用于扩展音频策略(AudoPolicy)、媒体焦点控制(MediaFocusControl)和音频调度服务(AudioFlinger)模块的功能,从而建立以虚拟Display为中心的音频焦点管理和音频流通路策略控制。
进一步地,所述Vendor音频扩展的功能中至少包括以下新增功能:
(1)AudioPolicyImp,用于实现基于虚拟Display的虚拟音频设备策略控制;
(2)MediaFocusControlImpl,用于实现基于虚拟Display为中心的音频焦点控制;
(3)AudioFlingerImpl,用于实现基于虚拟Display的音频流通路控制;
(4)多屏音频管理模块,负责虚拟Display对接虚拟音频设备管理,所述虚拟音频设备包括虚拟Speaker设备和虚拟Mic设备,还用于建立虚拟Display与音频设备HAL之间的映射关系,提供基于虚拟Display焦点管理。
可选的,在所述框架层中还可以包括其他管理器,比如窗口管理器、内容提供器、视图系统、电话管理器和通知管理器等。
另外,所述Android Runtime包括核心库和虚拟机。Android Runtime负责安卓系统的调度和管理。具体地,核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
所述系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。其中,所述媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
硬件抽象层HAL,是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。
本实施例中,所述HAL包括USB/DPAudio HAL、主音频(PrimaryAudio)HAL以及虚拟音频(VirtualAudio)HAL。其中,VirtualAudio HAL为新增的功能模块,所述VirtualAudioHAL可用于对接分布式虚拟音频设备,以及用于对接远端投屏音频输入输出设备。具体地,各个HAL模块的功能参见表2所示。
表2
下面对本实施例提供的方法流程进行详细说明。
本申请实施例提供一种音频流播放方法,用于实现手机设备一对多投屏业务场景下,多端设备的投屏显示,以及音频并发发声和拾音。
如图5所示,本实施例提供的一种音频播放方法,包括:
101:当终端设备启动投屏业务时,第一管理模块接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息,比如第一设备的标识、第一设备的设备名称等。
其中,所述第一管理模块为多屏音频管理模块,位于所述框架层,或者为所述Vendor音频扩展功能中新增功能模块。
102:所述第一管理模块向硬件抽象层HAL发送所述第一请求。
103:所述第一管理模块接收所述HAL发送的第一虚拟音频设备的设备标识,所述第一虚拟音频设备根据所述第一设备的相关信息创建。
104:所述第一管理模块向所述投屏业务模块发送所述第一虚拟音频设备的设备标识,以使所述投屏业务模块建立虚拟显示屏display和所述第一虚拟音频设备之间的绑定关系。
对应地,所述投屏业务模块接收该第一虚拟音频设备的设备标识,然后根据其获取的第一虚拟display,建立第一绑定关系,所述第一绑定关系为第一虚拟音频设备的设备标识和所述第一虚拟display之间的对应关系。
比如第一虚拟display为Virtual display0,所述第一虚拟音频设备的设备标识为Virtual Audio 0,则建立所述第一绑定关系为<Virtual display0,VirtualAudio 0>。
应理解,当有多个应用请求投屏时,则第一管理模块接收向HAL请求多个虚拟音频设备的设备标识,并为建立多个绑定关系,每个所述绑定关系包含一个虚拟display和一个虚拟音频设备之间的对应关系。
另外,如图6所示,上述还包括:
105:第一管理模块接收所述投屏业务模块发送的所述第一绑定关系。
106:当第一应用请求播放音频流时,所述第一管理模块确定第一虚拟display。
一种实施方式是,所述第一管理模块获取第一应用的标识,比如第一应用的包名,pid等,然后向第二管理模块发送所述第一应用的标识。所述第二管理模块根据所述第一应用的标识查找第一应用所属的第一虚拟display,以及向所述第一管理模块发送所述第一虚拟display。所述第一管理模块接收所述第二管理模块根据所述第一应用的标识确定的所述第一虚拟display。
此外,在步骤106之后,所述方法还包括:
所述第一管理模块根据所述第一虚拟display确定第一音频焦点,所述第一音频焦点与所述第一虚拟display相对应;查询所述第一音频焦点的状态是否可用;如果是,则向所述原生音频框架发送所述第一音频焦点。
如果查询所述第一音频焦点的状态不可用,则确定占用所述第一音频焦点的应用为第二应用;所述第一管理模块向所述原生音频框架发送第一指示信息,所述第一指示信息用于通知所述原生音频框架所述第一音频焦点需要被所述第一应用占用;当接收到所述第二应用停止使用所述第一音频焦点的指示时,向所述原生音频框架发送所述第一音频焦点,以使所述第一应用获取所述第一音频焦点。
进一步地,所述第一管理模块查询所述第一音频焦点的状态是否可用之前,还包括:所述第一管理模块获取第一虚拟display所关联的第一焦点管理记录,所述第一焦点管理记录中包括第一音频焦点的状态,其中所述第一音频焦点的状态包括空闲和使用,所述第一虚拟display唯一对应所述第一音频焦点。
所述第一管理模块查询所述第一音频焦点的状态是否可用,包括:所述第一管理模块在所述第一焦点管理记录查询所述第一音频焦点的状态是否为空闲。
107:所述第一管理模块根据所述第一虚拟display在所述第一绑定关系中查找第一虚拟音频设备的设备标识。
108:所述第一管理模块向原生音频框架发送所述第一虚拟音频设备的设备标识,以使所述原生音频框架将对应的音频流通过所述第一虚拟音频设备输出到第一设备。
并且,上述方法还包括:所述第一管理模块按照虚拟display音频焦点机制维护所述第一焦点管理记录;
所述虚拟display音频焦点机制包括:在同一个虚拟display中有两个或两个以上应用,且所述两个或两个以上应用同时申请音频焦点时,按照高优先级业务应用抢占低优先级业务的应用,和,同等优先级的业务应用遵循后申请应用抢占先申请应用的规则。
另外,还包括:每个虚拟display拥有独立的音频焦点,不同的虚拟display所对应的音频焦点相互独立,互补干扰。
本实施例提供的方法,增强现有投屏场景音频输入输出能力,第一管理模块为每个请求投屏的设备建立虚拟display,并基于虚拟display配置独立虚拟音频输入输出设备,建立虚拟display与虚拟音频设备之间的绑定关系,使得虚拟display运行应用时,音频流跟随投屏端音频设备输入输出,实现一对多投屏场景下,每个投屏设备显示音频互相独立,互不干扰。
另外,每个投屏设备运行应用播放声音,在当前投屏设备端发声,每个投屏设备显示运行应用录音可以使用当前投屏设备的录音功能进行录音,从而实现多任务音频设备并发发声和拾音。
另外,本实施例还提供了另一种音频播放方法,该方法可应用于第二管理模块,所述第二管理模块为多屏管理模块,具体地,所述方法包括:
第二管理模块接收投屏业务模块发送的第二请求,所述第二请求用于创建投屏的虚拟display,其中所述第二请求中包括;指定虚拟display名称、大小以及分辨率信息;所述第二管理模块根据所述指定虚拟display名称、大小以及分辨率信息创建第一虚拟display;以及,向所述投屏业务模块发送所述第一虚拟display,以使所述虚拟投屏业务模块建立所述第一虚拟display和第一虚拟音频设备之间的第一绑定关系。
此外,上述方法还包括:第二管理模块接收所述投屏业务模块发送的所述第一绑定关系,并向所述第一管理模块发送所述第一绑定关系。
其中,在一种可能的实施方式中,所述第二管理模块获取第一应用的标识,包括:所述第二管理模块在所述第一应用请求申请音频焦点时,接收所述第一管理模块发送的音频焦点请求,所述音频焦点请求中包括所述第一应用的标识。
本实施例,构建以虚拟display为中心音频焦点管控机制,为每一个虚拟display分配焦点,基于应用所在虚拟display进行音频焦点抢占管理,支持不同虚拟display应用音频焦点共存和音频播放并发管理。
可选的,在另一种可能的实施方式中,所述第二管理模块获取第一应用的标识,包括:所述第二管理模块在所述原生音频框架获取第一应用播放的音频流时,接收所述第一管理模块发送的所述第一应用的标识。
另外,对于投屏业务模块来说,本实施例提供的音频播放方法,包括:
所述投屏业务模块在获取用户启动投屏业务的操作时,获取第二管理模块创建的第一虚拟显示屏display;所述投屏业务模块在与期望投屏的第一设备建立虚拟音频链路后,向所述第一管理模块发送第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息。
所述投屏业务模块接收所述第一管理模块发送的第一虚拟音频设备的设备标识;所述投屏业务模块建立第一绑定关系,所述第一绑定关系包括所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的对应关系;以及向所述第一管理模块发送所述第一绑定关系。
其中,所述获取第二管理模块创建的第一虚拟显示屏display,包括:所述投屏业务模块向所述第二管理模块发送第二请求,所述第二请求用于请求所述第二管理模块创建虚拟display;所述投屏业务模块接收所述第二管理模块根据所述第二请求创建的所述第一虚拟display。
当结束投屏业务时,方法还包括:当获取用户断开投屏业务的操作时,解除所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的第一绑定关系;所述投屏业务模块向所述第一管理模块发送第一消息,所述第一消息用于通知所述第一管理模块删除所述第一绑定关系。具体地,通过第一管理模块删除第一虚拟音频设备,以及通过所述HAL删除该第一虚拟音频设备。
下面结合具体例子对上述实施例提供的方法进行详细说明。
参见图7,本实施例提供的音频播放系统中包括一个源设备和两个投屏设备,其中所述源设备为手机100,投屏设备包括第一设备和第二设备。可选的,所述第一设备为智慧屏200所述第二设备为平板300,下面以手机100和智慧屏200为例,介绍源设备到投屏设备的投屏过程,以及建立投屏连接后音频流从手机100传输至智慧屏200的方法流程。
具体地,参见图8,本方法包括以下三部分流程,第一部分流程概括为:启动投屏流程,该流程是播放音频前的准备阶段,包括步骤S1至S4,主要目的是建立虚拟display与虚拟音频设备之间的一对一绑定关系。
第二部分流程为:音频焦点的申请和抢占。包括步骤S5至S6,因为在源设备播放音频流之前,需要先获得一个音频焦点,每个虚拟display可以提供一个音频焦点,当有两个或两个以上应用在申请同一个虚拟display的音频焦点时,则会发生音频焦点抢占,此时可以遵循虚拟display音频焦点机制为请求的应用提供音频焦点。
第三部分流程为:根据分流策略向应用对应的虚拟音频设备传输音频流,从而实现从源设备到投屏设备的音频传输和播放,主要包括步骤S7和S8。
其中,这三部分流程可以按顺序执行,或者第一部分流程和第二部分流程同时执行,本实施例对此不予限制。
其中,如图5所示,涉及的功能模块包括:手机100的投屏业务模块10、第一管理模块21、第二管理模块22和虚拟音频HAL 30。投屏业务模块10位于应用层中,第一管理模块21位于原生音频框架20中,第二管理模块位于多屏管理模块中,所述原生音频框架20和多屏管理模块位于框架层,所述虚拟音频HAL 30位于硬件层。
可选的,在一种可能的实施方式中,所述投屏业务模块10为一个Android应用程序包(Android application package,APK)。此外,还可以包括其他应用比如,第一应用11和第二应用12,并且所述第一应用11和第二应用12具有音频播放功能。
可选的,在另一种可能的实施方式中,所述投屏业务模块10也可以位于框架层,与应用层的投屏业务应用相关联,用于执行投屏业务应用的相关进程。
可选的,所述第一管理模块21为一种多屏音频管理模块,所述第二管理模块22为一种多屏管理模块。
下面对各个部分的方法流程做详细介绍。
首先,在准备阶段,第一部分流程:启动投屏流程,如图8所示,具体包括:
S1:用户在终端设备上启动投屏业务。
具体地,用户通过投屏对应入口启动投屏。例如用户在手机100上点击投屏业务应用,启动在第一设备上的投屏操作,所述第一设备为智慧屏200。
S2:建立所述终端设备与所述第一设备之间的第一通信链路。
其中,所述终端设备与所述第一设备之间可以通过USB或WiFi等方式建立所述第一通信链路。
具体地,手机100接收用户的启动投屏业务的操作后,与智慧屏200之间建立第一通信链路。一种实施方式是,
S2-1:投屏业务模块10向智慧屏200发送第一消息,所述第一消息用于与手机100建立第一通信链路。具体地,所述投屏业务模块10通过无线资源控制(Radio ResourceControl,RRC)信令向智慧屏200发送所述第一消息。所述第一消息中包括手机100标识、手机设备名称、连接请求等信息。
S2-2:智慧屏200接收所述第一消息后,向所述手机100发送第一响应消息。
其中,所述第一响应消息中包括:手机100标识、手机设备名称、智慧屏200的相关能力(尺寸、分辨率、支持视频编码)、音频相关能力,比如是否支持Speaker或Mic能力,支持采样率、位宽等,以及相关连接认证信息。
可选的,所述第一响应消息为RRC消息。具体地,智慧屏200将所述RRC消息发送给手机100的应用层。
S2-3:手机100的应用层(比如投屏业务模块10)接收所述第一响应消息,确定发送该第一响应消息的端设备是智慧屏200,建立与智慧屏200之间的第一通信链路。
投屏业务模块10根据场景选择通过USB或WiFi等方式连接所述智慧屏200,建立所述第一通信链路。
S3:手机100与所述第一设备之间建立虚拟音频设备链路。
S4:手机100建立第一虚拟display和第一虚拟音频设备的设备标识之间的第一绑定关系。
其中,如图9所示,在步骤S2之后,所述方法包括:
S2’:投屏业务模块10请求所述第二管理模块22创建投屏虚拟display。
具体地,当手机100与智慧屏200之间建立完成第一通信链路后,手机100的投屏业务模块10向第二管理模块22发送第二请求,所述第二请求用于创建与投屏关联的虚拟display。所述第二请求中包括;虚拟display名称、大小以及分辨率信息等。
一种实施方式包括:投屏业务模块10调用第二管理模块22的接口,并发送虚拟display名称、大小以及分辨率信息,创建投屏关联的虚拟display,并且将该虚拟display作为投屏显示源。
第二管理模块22接收所述第二请求,根据所述第二请求中携带的信息创建第一虚拟display,比如虚拟display 0。并且,将所述第一虚拟display发送给投屏业务模块10。
投屏业务模块10接收第二管理模块22发送的所述第一虚拟display,并利用该第一虚拟display与所述智慧屏200创建第二通信链路。所述第二通信链路为一虚拟音频设备链路。
具体地,一种实施方式包括:投屏业务模块10向智慧屏200发送请求消息,用于请求与所述智慧屏200建立第二通信链路。智慧屏200接收投屏业务模块10发送的请求消息后,向投屏业务模块10发送反馈结果,所述反馈结果中指示所述第二通信链路是否创建成功。其中,所述反馈结果中包括:指定音频设备类型、设备ID以及音频通路接入信息。
对应地,所述投屏业务模块10接收所述反馈结果,当所述反馈结果中指示创建成功时,手机100与智慧屏200建立所述第二通信链路。
参见图9,上述步骤S4具体包括:
S4-1:当与智慧屏200成功建立所述第二通信链路后,投屏业务模块10向第一管理模块21发送第一请求,所述第一请求用于请求创建虚拟音频设备。相应的,第一管理模块21接收所述投屏业务模块10发送的第一请求。
其中,所述第一请求中包括指定音频设备类型、手机100的设备ID以及音频通路接入信息,所述接入信息包括USB或WiFi等。
S4-2:第一管理模块21收到所述第一请求后,向虚拟音频HAL 30发送所述第一请求。相应的,虚拟音频HAL 30接收所述第一管理模块21转发的第一请求。
S4-3:虚拟音频HAL 30通过手机100和智慧屏200之间的虚拟音频设备链路创建关联的虚拟音频设备(audio device),确定所述虚拟音频设备的设备标识,比如确定所述虚拟音频设备为第一虚拟音频设备,则该虚拟音频设备的设备标识的设备标识为第一虚拟音频设备的设备标识,比如audio device 0。
具体地,虚拟音频HAL 30为手机100和智慧屏200会话链路创建关联的虚拟音频设备,并生成虚拟音频的设备标识,虚拟音频设备对象包含虚拟音频的类型,设备ID以及音频通路接入信息等。
S4-4:虚拟音频HAL 30向所述第一管理模块21发送创建虚拟音频设备(VirtualAudio)的设备标识,即所述第一虚拟音频设备的设备标识。
S4-5:第一管理模块21收到所述虚拟音频设备的设备标识后,向所述投屏业务模块10发送该虚拟音频设备的设备标识。
可选的,第一管理模块21通过指令或者消息发送所述虚拟音频设备的设备标识。
S4-6:投屏业务模块10接收所述虚拟音频设备的设备标识,并建立所述虚拟音频设备(VirtualAudio)的设备标识和第一虚拟display之间的绑定关系。其中,所述第一虚拟display由前述S2’中获得。
具体地,投屏业务模块10将第一虚拟display与新创建的所述虚拟音频设备的设备标识绑定,即为虚拟display配置一个虚拟音频设备,建立虚拟display对应虚拟音频设备的一对一绑定关系。参见表3所示,为建立的第一虚拟显示屏(Virtual display 0)与第一虚拟音频设备(VirtualAudio 0)的设备标识之间的第一绑定关系。
表3
S4-7:投屏业务模块10将所述绑定关系发送给第二管理模块22,所述第二管理模块22接收后又将该绑定关系发送给第一管理模块21。
S4-8:第一管理模块21接收该绑定关系,并维护和存储。
本实施例中,手机100投屏智慧屏200,投屏业务模块10为智慧屏200创建虚拟display,投屏业务模块10将虚拟display与虚拟音频设备之间的绑定关系通知给第一管理模块21,使得第一管理模块21维护虚拟display与虚拟音频设备之间的绑定关系,用于后续为多屏音频焦点管理和音频流对应音频设备选择提供依据。
另外,本实施例还提供了一种断开投屏连接的方法,手机100收到断开投屏请求操作,投屏业务模块需要解除所述虚拟display和创建的虚拟音频设备之间的绑定关系,如图10所示,具体流程如下:
201:用户通过投屏业务应用启动断开投屏业务。
具体地,所述用户在手机100上点击投屏业务界面,断开与智慧屏200的投屏连接。
202:投屏业务模块10接收到用户断开投屏操作后向多屏管理模块发送第一指令,所述第一指令用于请求断开智慧屏200关联的虚拟display,所述第一指令中包括智慧屏200标识信息。
其中,所述多屏管理模块为前述图4所示的多屏管理模块,或者是图7所示的第二管理模块22,本实施例以第二管理模块22举例。
202:第二管理模块22接收所述第一指令,根据所述第一指令中携带的智慧屏200标识信息查找对应虚拟display。
本实施例中,假设第二管理模块22查找到的虚拟display为第一虚拟display。
203:第二管理模块22查找到第一虚拟display后解除第一绑定关系,所述第一绑定关系为第一虚拟display和第一虚拟音频设备的设备标识之间的对应关系。
204:第二管理模块22向第一管理模块21发送第二指令,所述第二指令中包括:显示屏200对应虚拟display标识(即第一虚拟display)、智慧屏200标识等信息。相应的,第一管理模块21接收所述第二管理模块22发送所述第二指令。
205:第一管理模块21根据所述第二指令中携带的虚拟display标识查找该虚拟display与虚拟音频设备之间的绑定关系记录,查找到所述绑定关系记录后,第一管理模块21清除所述绑定关系记录中的绑定关系。
本示例中,第一管理模块21根据所述第一虚拟display查找到第一绑定关系,然后解除所述第一绑定关系中第一虚拟display和第一虚拟音频设备的设备标识之间的对应关系。
206:投屏业务模块10向所述第一管理模块21发送第三指令,所述第三指令用于通知第一管理模块21删除智慧屏200对应虚拟音频设备。其中,所述第三指令中包括智慧屏200标识信息,第一虚拟音频设备的设备标识等信息。
207:第一管理模块21收到所述第三指令后,向虚拟音频HAL30发送该第三指令,用于通知所述虚拟音频HAL 30删除与智慧屏200对应的第一虚拟音频设备。
208:虚拟音频HAL 30接收所述第三指令,根据所述第三指令中携带第一虚拟音频设备的设备标识等信息断开智慧屏200与所述第一虚拟音频设备之间的关系,并删除所述第一虚拟音频设备的信息。
209:投屏业务模块10断开与智慧屏200之间的通信链路。
具体地,投屏业务模块10向智慧屏200发送断开请求,所述断开请求用于断开与手机100与智慧屏200之间的所述第一通信链路。智慧屏200接收所述断开请求后,断开所述第一通信链路。
此外,上述方法还包括第一管理模块21和第二管理模块22更新上述表3所示的绑定关系,释放所述第一虚拟display。
本实施例提供的了一种断开投屏连接的方法,当源设备与投屏设备之间不需要维持投屏连接时,通过第一管理模块和第二管理模块接触虚拟display和虚拟音频设备之间的绑定关系,从而释放虚拟display,为后续与其他投屏设备建立连接提供方便,
另外,在投屏业务模块10建立所述第一绑定关系后,按照上述步骤S1至S4,针对手机投屏多个设备场景,多屏音频管理模块会在内部维护多个虚拟display与虚拟音频设备之间的绑定关系,不同虚拟display的应用播放音频功能会基于Android音频焦点机制设计开发。本实施例提供基于虚拟display的音频焦点机制,对应用无感知,应用APP不需要代码修改。
此外,基于虚拟display的音频焦点方案,多屏音频管理模块在表3所示基础上还为每一个虚拟display提供一个焦点管理记录,用于记录当前虚拟display音频焦点状态(Audio Focus State)、占用音频焦点的应用(Owner)以及申请音频焦点应用栈(APPStack)。其中,所述虚拟display音频焦点状态包括:使用(Used)和空闲(Idle)两种状态。具体地,如表4所示,
表4
表4中记录了虚拟音频焦点的状态和占用者,为后续音频焦点的抢占和音频流的分配提供依据。
在第一部分流程的准备阶段完成后,执行第二部分流程,第二部分流程为:基于虚拟display的音频焦点抢占流程。如图8所示,第二部分流程概括为:
S5:用户启动第一应用播放音频操作,所述第一应用具有音频播放功能,比如QQ音乐。
S6:手机终端根据用户的操作申请音频焦点,并获取第一音频焦点。其中所述第一音频焦点唯一对应第一虚拟display。
该流程在手机连接多设备场景下,提供一种应用播放音频焦点的抢占机制,该机制为每个虚拟display维护一个焦点管理记录,用于记录当前虚拟display是否有可以为应用提供使用的音频焦点,以及各个应用当前申请的音频焦点信息。
如上图11所示,应用层的一个应用向框架层的AudioManager申请音频焦点,MediaFocusControl根据申请应用归属虚拟display向多屏音频管理模块查找,判断对应虚拟display运行的应用申请的焦点是否可用,如果可用,则返回申请应用音频焦点;如果不可用,即焦点被其他应用使用,则抢占当前正在使用的应用音频焦点,返回申请应用可用的音频焦点,同时通知被抢占的应用失去音频焦点。
基于虚拟display音频焦点机制如下:
第一、每个虚拟display拥有独立的音频焦点,不同虚拟display所拥有的音频焦点之间相互独立、互不干扰。
第二、如果在同一个虚拟display中有两个或两个以上应用,且两个或两个以上应用同时申请音频焦点时,遵循现有Android音频焦点抢占机制,即高优先级业务应用抢占低优先级业务的应用,对于同等优先级的业务应用遵循后申请应用抢占优先的规则。
如图12所示,应用申请音频焦点,以及在发生音频焦点抢占情况下,该应用获取音频焦点的流程说明如下:
步骤S5至步骤S6为第一应用申请音频焦点的过程,具体包括:
S5:接收用户启动第一应用播放音乐的操作。
S6-1:所述第一应用播放音频之前通过Android音频焦点申请接口向原生音频框架20申请音频焦点。
一种实现方式是,第一应用向原生音频框架20发送一个请求,用于请求申请音频焦点。所述请求中包括:Android音频焦点请求消息、音频类型等。该请求的音频焦点用于为第一应用播放音频流。
可选的,所述原生音频框架20为AOSP原生音频框架。
S6-2:原生音频框架20接收所述申请音频焦点的请求后,向第一管理模块21发送该申请音频焦点的请求,该请求中包括:Android音频焦点请求消息、音频类型、以及第一应用的相关信息等,所述第一应用的相关信息包括但不限于第一应用当前启动运行的进程id(process id,pid)、包名等。
S6-3:第一管理模块21接收所述请求后向第二管理模块22发送该申请音频焦点的请求,所述请求用于查询第一应用所在的虚拟display信息,所述请求中包括所述第一应用的相关信息,比如pid、第一应用的包名等。
S6-4:第二管理模块22接收所述请求后,根据该请求中的所述第一应用的相关信息查询第一应用所对应的虚拟display标识。
比如,第一应用为应用A或APP1,根据表5所示的对应关系确定应用A所对应的虚拟display标识为Virtual display 0。
表5
智慧屏200 | Virtualdisplay0 | VirtualAudio0 | Idle空闲 |
S6-5:第二管理模块22向第一管理模块21发送所述查找的虚拟display标识。
具体地,第二管理模块22通过响应消息携带所述查找的虚拟display标识,即所述响应消息中包括:第一应用所对应的虚拟display标识(Virtual display 0)。
S6-6:第一管理模块21接收所述虚拟display标识,并根据上述表4或表5维护的虚拟display与虚拟音频设备的关系表中查找所述虚拟display的记录,判断该虚拟display记录中的音频焦点的状态是否可用,或者换言之是否有其他应用使用该音频焦点。
本示例中,Virtual display0所对应的音频焦点状态为空闲(Idle),则确定当前第一应用所申请的第一音频焦点可用,表明第一应用请求的第一音频焦点可用。
S6-7:第一管理模块21向原生音频框架20返回查询结果,所述查询结果中包含请求第一音频焦点可用的指示信息。
例如,第一管理模块21向原生音频框架20发送response(响应消息),所述response中包括所述第一音频焦点可用的指示信息,允许应用A授权访问第一音频焦点信息。
S6-8:原生音频框架20根据所述查询结果确定第一应用申请的第一音频焦点可用,即申请第一音频焦点成功,并将该第一音频焦点可用的指示信息发送给应用A。
对应的,第一应用接收来自所述原生音频框架20的指示信息后,获得所述第一音频焦点。
此外,在上述步骤S6-6中还包括:第一管理模块21更新虚拟display0记录信息。具体地,第一管理模块21将虚拟display 0中第一音频焦点的状态设置成“使用”中,设置应用A占用虚拟display0音频焦点,以及将应用A添加到应用栈表中,更新后的虚拟display0记录信息如表6所示。
表6、更新后的虚拟display0记录信息
另外,在上述步骤207中,如果第一管理模块21判断所述第一音频焦点处于“使用”状态,则表明第一音频焦点已经被其他应用占用,则第一应用申请音频焦点需要遵从音频焦点抢占机制。
下面介绍应用B和应用C申请音频焦点的方法流程。具体地,如图13所示,方法包括:
S5:手机100接收用户启动应用B播放音频的操作,所述应用B具有音频播放功能,且该应用B对应的虚拟display标识为虚拟display 1。
应用B接收用户操作后,调用第一管理模块21的接口,申请音频焦点,并获得第二音频焦点。具体的过程与前述步骤S6-1至S6-8相同,本实施例此处不再赘述。此时应用A使用第一音频焦点播放音频流,应用B使用第二音频焦点播放音频流。
此时更新后的虚拟display记录信息如表7所示。
表7
当应用C申请音频焦点时,上述方法还包括:
S5’:手机100接收用户启动应用C播放音频的操作。
应用C向第一管理模块21和第二管理模块22申请音频焦点,第二管理模块查询应用C所对应的虚拟display为虚拟display 1。具体过程可参见前述步骤S6-1至S6-4,此处不再赘述。
在第二管理模块22查询到应用C所在的虚拟display后,参见图13所示,方法包括:
301:第一管理模块21接收第二管理模块22返回的应用C所在虚拟display标识,本示例中应用C所在的display标识为虚拟display 1。
302:第一管理模块21根据所述应用C所在的虚拟display1确定应用C请求的音频焦点为第二音频焦点,并且判断该第二音频焦点是否可用。
本示例中,应用C和应用B所对应的虚拟display标识都是Virtual display 1,且该Virtual display 1对应第二音频焦点,其中第二音频焦点被应用B先获取和使用(used),从而判断该应用C申请的第二音频焦点不可用。
303:第一管理模块21根据虚拟display音频焦点机制,即高优先级业务应用抢占低优先级业务的应用,以及,对于同等优先级的业务应用遵循后申请应用抢占优先的规则。本示例中,因为应用C所对应的业务优先级高于应用C,且应用C是后申请的应用,所以确定应用C抢占应用B的第二音频焦点。
304:第一管理模块21向原生音频框架20发送指示信息,所述指示信息用于指示应用C抢占所述第二音频焦点。
305:原生音频框架20接收所述指示信息后向应用B发送通知,通知应用B释放当前使用的第二音频焦点。
306:应用B接收该通知后,停止使用并释放所述第二音频焦点。
另外,在步骤306释放所述第二音频焦点后,还包括:
307:第一管理模块21向原生音频框架20发送通知消息,用于通知应用C使用所述第二音频焦点。
308:原生音频框架20将所述通信消息发送给应用C,通知应用C获得第二音频焦点。
309:应用C接收该通知消息后,获得并使用所述第二音频焦点。
本实施例中,当有多个应用申请同一音频焦点时,根据虚拟display音频焦点机制为应用分配相应的焦点,从而优化运行在不同虚拟display的应用音频焦点抢占机制,支持基于虚拟display的多任务音频并发控制。
此外,第一管理模块21还刷新虚拟display记录信息,如表8所示。
表8
需要说明的是,上述应用A、应用B和应用C可以是前述实施例的第一应用,也可以是第二应用,本实施例对此不予限制。
当应用申请到音频焦点后,通过Android SDK接口播放音频流,多屏音频管理模块根据应用所在display与虚拟音频设备映射关系,将应用播放音频流分流到对应的虚拟音频设备上输出播放。
第三部分流程:定义基于虚拟Display的音频分流策略,根据分流策略向应用对应的虚拟音频设备传输音频流。
具体地,如图14a所示,Android音频流通过AudioFlinger进行分发,多屏音频管理模块在“第一部分流程中”中构建了虚拟display与虚拟音频设备的设备标识之间的绑定关系,当前应用获取音频焦点后,创建AudioTrack播放音频(或创建AudioRecod录音),AudioFlinger先根据当前应用归属虚拟display找到对应虚拟音频设备,然后将应用AudioTrack(或AudioRecord)分发到对应的虚拟音频设备中,虚拟音频HAL收到音频流后分发到对应投屏设备端。
如图14b所示,基于虚拟display音频分流方法流程包括:
401:当用启动应用A播放音乐时,应用A播放音乐,调用Android SDK接口播放第一音频流,应用A向原生音频框架20写入所述第一音频流。
402:原生音频框架20接收到应用A的所述第一音频流后,向第一管理模块21发送查询请求,查询应用A的音频播放策略。
其中,所述查询请求中包含应用A相关信息,例如应用A的包名、pid、标识等信息。
403:第一管理模块21接收所述查询消息后,将该查询请求发送至第二管理模块22。
404:第二管理模块22接收来自所述第一管理模块发送的请求消息后,根据虚拟display记录信息表查询应用A所属的虚拟display标识。
本示例中,根据表6至表8的对应关系,确定应用A所属的虚拟display标识为虚拟display0。
405:第二管理模块22将查询结果,即虚拟display标识发送给第一管理模块21。比如第二管理模块22向第一管理模块21返回第一查询结果,所述第一查询结果中包括:应用A的所在的虚拟display 0。
406:第一管理模块21接收第一查询结果后,根据应用A的所在的虚拟display 0,从维护的绑定关系中查找虚拟display 0所对应的虚拟音频设备。
所述绑定关系为前述“第一部分流程”中建立的虚拟display和虚拟音频设备的设备标识之间的对应关系。如前述表4、表5、表6所示的绑定关系,确定与应用A绑定的虚拟音频设备的设备标识,与所述虚拟display 0所绑定的虚拟音频设备为智慧屏,该虚拟音频设备的设备标识为智慧屏200。
407:第一管理模块21向所述原生音频架构20发送查找的虚拟音频设备的设备标识。
本示例中,第一管理模块21发送第二查询结果,第二查询结果中包含display0对应关联的虚拟音频设备的设备标识,智慧屏200。
408:原生音频框架20收到所述第二查询结果后,根据音频策略获取第一音频流,所述第一音频流是需要向智慧屏200播放的音频流。
409:原生音频框架20将应用A播放的第一音频流和虚拟音频设备的设备标识分发到虚拟音频HAL 30,即向所述虚拟音频HAL发送所述第一音频流和智慧屏200的信息。
410:虚拟音频HAL 30收到原生音频框架20发送的第一音频流和虚拟音频设备的设备标识后,根据虚拟音频设备的设备标识找到对应的音频通路,将第一音频流通过该音频通路发送至音频设备智慧屏200。
智慧屏200接收该第一音频流后,播放该第一音频流,实现手机100中的应用A的第一音频流在智慧屏200上播放功能。
其中,上述步骤401至407对应前述“第三部分流程”中的步骤S7,步骤408至410对应前述“第三部分流程”中的步骤S8。
同理地,当应用B请求播放第二音频流时,将第二音频流通过第一管理模块21查找到的虚拟音频设备的设备标识,传输至第二设备,比如平板300,从而实现手机100的应用B将第二音频流传输至另一投屏设备,平板300的功能。
具体地,应用B传输分发第二媒体流的过程,步骤411至420的方法与前述步骤401至410相同,参见前述实施例的描述,此处不详细赘述。
本实施例中,由于应用A分配的虚拟display(即虚拟display 0)和应用B所分配的虚拟display(即虚拟display 1)不同,且每个display对应的虚拟音频设备互相独立,互补干扰,所以通过“第一部分流程”建立的绑定关系,可以实现一对多投屏功能,多端投屏显示以及音频输入输出相互独立,每一个投屏端设备运行应用播放声音在当前投屏端设备发声,实现真正的多任务音频并发和拾音。
应理解,上述应用C在获取第二音频焦点后,请求播放第三音频流并在虚拟display 1所关联的平板300上播放所述第三音频流,具体过程与前述步骤401至410相同,参见前述实施例的描述,本实施例对此不再赘述。
此外,上述根据分流策略向应用对应的虚拟音频设备传输音频流的方案还适用于其他场景,比如录音场景,从而实现每个投屏设备运行应用录音可以使用当前投屏端设备进行录音,满足一对多投屏功能的录音需求。或者,还适用于一对多投屏分布式相机(camera)虚拟化环境,可实现多屏场景分布式camera使用场景。
本申请实施例中,手机端可基于应用窗口形态将显示的画面内容传输到投屏设备的每个显示屏上,实现针对每个应用窗口音频并发。
下面介绍与上述方法实施例对应的装置实施例。
图15为本申请实施例提供的一种管理装置的结构示意图。所述装置可以应用于前述的第一管理模块,或者,还可以是位于终端设备中的部件。并且,该装置可以实现前述实施例中的第一管理模块21的所有功能,并执行前述实施例中的一种音频播放方法。
其中,该装置包括:第一接收单元1501、第一处理单元1502和第一发送单元1503,此外还可以包括其他单元或模块,比如存储单元等。
具体地,第一接收单元1501用于当终端设备启动投屏业务时,接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;第一发送单元1503用于向硬件抽象层HAL发送所述第一请求;第一接收单元1501还用于接收所述HAL发送的第一虚拟音频设备的设备标识,所述第一虚拟音频设备根据所述第一设备的相关信息创建。第一发送单元1503还用于向所述投屏业务模块发送所述第一虚拟音频设备的设备标识,以使所述虚拟投屏业务模块建立虚拟显示屏display和所述第一虚拟音频设备之间的绑定关系。
可选的,在本实施例的一种具体的实施方式中,第一接收单元1501还用于接收所述投屏业务模块发送的第一绑定关系,所述第一绑定关系包括第一虚拟显示屏display和所述第一虚拟音频设备的设备标识之间的对应关系;第一处理单元1502用于当第一应用请求播放音频流时确定第一虚拟display,根据所述第一虚拟display在所述第一绑定关系中查找第一虚拟音频设备的设备标识;第一发送单元1503还用于向原生音频框架发送所述第一虚拟音频设备的设备标识,以使所述原生音频框架将对应的音频流通过所述第一虚拟音频设备输出到第一设备。
可选的,在本实施例的另一种具体的实施方式中,第一接收单元1501还用于获取第一应用的标识;第一发送单元1503还用于向第二管理模块发送所述第一应用的标识;第一接收单元1501还用于接收所述第二管理模块根据所述第一应用的标识确定的所述第一虚拟display。
可选的,在本实施例的又一种具体的实施方式中,第一处理单元1502还用于根据所述第一虚拟display确定第一音频焦点,所述第一音频焦点与所述第一虚拟display相对应,查询所述第一音频焦点的状态是否可用;第一发送单元1503还用于在所述第一处理单元1502查询所述第一音频焦点可用时,向所述原生音频框架发送所述第一音频焦点。
可选的,在本实施例的又一种具体的实施方式中,第一处理单元1502还用于在查询所述第一音频焦点的状态不可用时,确定占用所述第一音频焦点的应用为第二应用;所述第一发送单元1503还用于向所述原生音频框架发送第一指示信息,所述第一指示信息用于通知所述原生音频框架所述第一音频焦点需要被所述第一应用占用;以及,当所述第一接收单元接收到所述第二应用停止使用所述第一音频焦点的指示时,向所述原生音频框架发送所述第一音频焦点,以使所述第一应用获取所述第一音频焦点。
可选的,在本实施例的又一种具体的实施方式中,所述第一管理模块查询所述第一音频焦点的状态是否可用之前,还包括:第一处理单元1502还用于获取第一虚拟display所关联的第一焦点管理记录,以及在所述第一焦点管理记录查询所述第一音频焦点的状态是否为空闲。其中,所述第一焦点管理记录中包括第一音频焦点的状态,所述第一音频焦点的状态包括空闲和使用,所述第一虚拟display唯一对应所述第一音频焦点。
可选的,在本实施例的又一种具体的实施方式中,第一处理单元1502还用于按照虚拟display音频焦点机制维护所述第一焦点管理记录。其中,所述虚拟display音频焦点机制包括:在同一个虚拟display中有两个或两个以上应用,且所述两个或两个以上应用同时申请音频焦点时,按照高优先级业务应用抢占低优先级业务的应用,和,同等优先级的业务应用遵循后申请应用抢占先申请应用的规则。
此外,本实施例还提供另一种管理装置,如图16所示,该装置可应用于第二管理模块,用于实现前述第二管理模块22的全部或部分功能,其中,所述第二管理模块包括:第二接收单元1601、第二处理单元1602和第二发送单元1603,此外还可以包括其他单元或模块,比如存储单元等。
其中,第二接收单元1601用于接收投屏业务模块发送的第二请求,所述第二请求用于创建投屏的虚拟display,所述第二请求中包括;指定虚拟display名称、大小以及分辨率信息。第二处理单元1602用于根据所述指定虚拟display名称、大小以及分辨率信息创建第一虚拟display;第二发送单元1603用于向所述投屏业务模块发送所述第一虚拟display,以使所述虚拟投屏业务模块建立所述第一虚拟display和第一虚拟音频设备之间的第一绑定关系。
可选的,在本实施例的一种具体的实施方式中,第二接收单元1601还用于接收所述投屏业务模块发送的所述第一绑定关系;第二发送单元1603还用于向所述第一管理模块发送所述第一绑定关系。
可选的,在本实施例的另一种具体的实施方式中,第二接收单元1601还用于当第一应用请求播放音频流时,所述第二管理模块获取第一应用的标识;第二处理单元1602还用于根据所述第一应用的标识查找第一应用所属的第一虚拟display;第二发送单元1603还用于向所述第一管理模块发送所述第一虚拟display。
可选的,在本实施例的又一种具体的实施方式中,第二接收单元1601还用于在所述第一应用请求申请音频焦点时,接收所述第一管理模块发送的音频焦点请求,所述音频焦点请求中包括所述第一应用的标识。
可选的,在本实施例的又一种具体的实施方式中,第二接收单元1601还用于在所述原生音频框架获取第一应用播放的音频流时,接收所述第一管理模块发送的所述第一应用的标识。
此外,本实施例还提供了一种应用装置,如图17所示,该装置可用应用于一种投屏业务模块,用于实现前述投屏业务模块10的部分或全部功能,所述应用装置包括:第三接收单元1701、第三处理单元1702和第三发送单元1703,此外还可以包括其他单元或模块,比如存储单元等。
具体地,第三接收单元1701用于在获取用户启动投屏业务的操作时,获取第二管理模块创建的第一虚拟显示屏display;第三发送单元1703用于在与期望投屏的第一设备建立虚拟音频链路后,向所述第一管理模块发送第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息。
第三接收单元1701还用于接收所述第一管理模块发送的第一虚拟音频设备的设备标识;第三处理单元1702用于所述投屏业务模块建立第一绑定关系,所述第一绑定关系包括所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的对应关系;第三发送单元1703,还用于向所述第一管理模块发送所述第一绑定关系。
可选的,在本实施例的一种具体的实施方式中,第三发送单元1703还用于向所述第二管理模块发送第二请求,所述第二请求用于请求所述第二管理模块创建虚拟display;第三接收单元1701还用于接收所述第二管理模块根据所述第二请求创建的所述第一虚拟display。
可选的,在本实施例的另一种具体的实施方式中,第三处理单元1702还用于当获取用户断开投屏业务的操作时,解除所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的第一绑定关系;第三接收单元1703还用于向所述第一管理模块发送第一消息,所述第一消息用于通知所述第一管理模块删除所述第一绑定关系。
需要说明的是,上述各个管理装置和应用装置可以通过软件,或者软硬件结合的方式来实现。其中,所述第一接收单元至第三接收单元,第一发送单元至第三发送单元的功能可以通过终端设备的内部端口来实现,所述第一处理单元至第三处理单元的功能可以通过图3所示的处理器110实现,或者由处理器110和存储器120共同实现。终端设备与各个投屏设备之间的数据传输,比如音频流传输则可通过移动通信模块150或无线通信模块160来实现。
利用图3所示的终端设备,例如手机时,通过投屏业务、多频音频管理和多屏管理模块的功能实现一对多投屏场景,多端投屏设备显示以及音频输入输出相互独立,每一个投屏设备显示运行应用播放声音在当前投屏端设备发声,每个投屏设备显示运行应用录音可以使用当前投屏设备进行录音,实现多任务音频并发和拾音。
此外,本申请实施例还提供了一种音频播放系统,该系统包括至少一个源设备和至少两个投屏设备,所述源设备和投屏设备都可以是前述任意一种终端设备,所述终端设备的结构可以与前述图3所示的装置结构相同,也可以不相同。此外,还可以包括网络设备,比如服务器,云平台等,所述网络设备用于辅助终端设备实现一对多投屏业务功能。
此外,本申请实施例还提供一种芯片系统,如图18所示,该芯片系统中包括处理器1801用于支持上述装置实现上述各个方法中所涉及的功能,例如前述第一部分流程至第三部分流程中的方法步骤。在一种可能的设计中,芯片系统还包括存储器1802,用于保存第一管理装置、第二管理装置,以及各个模块必要的计算机指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
所述存储器1802中包括计算机存储介质,其中,该计算机存储介质可存储有程序指令,该程序指令被执行时可包括本申请提供的音频播放方法的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体ROM或随机存储记忆体RAM等。
在上述实施例中,可以全部或部分通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
上述计算机存储介质可以是一种计算机程序产品,所述计算机程序产品包括一个或多个计算机指令,例如请求申请音频焦点的指令、请求创建虚拟display指令、查询指令等,在计算机加载和执行所述计算机程序指令时,全部或部分地产生按照本申请上述各个实施例所述方法流程或功能。
此外,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”、“第三”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”、“第三”等字样也并不限定一定不同。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。
Claims (32)
1.一种音频播放方法,其特征在于,所述方法包括:
当终端设备启动投屏业务时,第一管理模块接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;
所述第一管理模块向硬件抽象层HAL发送所述第一请求;
所述第一管理模块接收所述HAL发送的第一虚拟音频设备的设备标识,所述第一虚拟音频设备根据所述第一设备的相关信息创建;
所述第一管理模块向所述投屏业务模块发送所述第一虚拟音频设备的设备标识,以使所述投屏业务模块建立虚拟显示屏display和所述第一虚拟音频设备之间的绑定关系。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述第一管理模块接收所述投屏业务模块发送的第一绑定关系,所述第一绑定关系包括第一虚拟显示屏display和所述第一虚拟音频设备的设备标识之间的对应关系;
当第一应用请求播放音频流时,所述第一管理模块确定第一虚拟display;
所述第一管理模块根据所述第一虚拟display在所述第一绑定关系中查找第一虚拟音频设备的设备标识;
所述第一管理模块向原生音频框架发送所述第一虚拟音频设备的设备标识,以使所述原生音频框架将对应的音频流通过所述第一虚拟音频设备输出到第一设备。
3.根据权利要求2所述的方法,其特征在于,所述第一管理模块确定第一虚拟display,包括:
所述第一管理模块获取第一应用的标识;
所述第一管理模块向第二管理模块发送所述第一应用的标识;
所述第一管理模块接收所述第二管理模块根据所述第一应用的标识确定的所述第一虚拟display。
4.根据权利要求2或3所述的方法,其特征在于,所述第一管理模块确定第一虚拟display之后,还包括:
所述第一管理模块根据所述第一虚拟display确定第一音频焦点,所述第一音频焦点与所述第一虚拟display相对应;
所述第一管理模块查询所述第一音频焦点的状态是否可用;
如果是,则向所述原生音频框架发送所述第一音频焦点。
5.根据权利要求4所述的方法,其特征在于,还包括:
如果查询所述第一音频焦点的状态不可用,则确定占用所述第一音频焦点的应用为第二应用;
所述第一管理模块向所述原生音频框架发送第一指示信息,所述第一指示信息用于通知所述原生音频框架所述第一音频焦点需要被所述第一应用占用;
当接收到所述第二应用停止使用所述第一音频焦点的指示时,向所述原生音频框架发送所述第一音频焦点,以使所述第一应用获取所述第一音频焦点。
6.根据权利要求4所述的方法,其特征在于,所述第一管理模块查询所述第一音频焦点的状态是否可用之前,还包括:
所述第一管理模块获取第一虚拟display所关联的第一焦点管理记录,所述第一焦点管理记录中包括第一音频焦点的状态,其中所述第一音频焦点的状态包括空闲和使用,所述第一虚拟display唯一对应所述第一音频焦点;
所述第一管理模块查询所述第一音频焦点的状态是否可用,包括:
所述第一管理模块在所述第一焦点管理记录查询所述第一音频焦点的状态是否为空闲。
7.根据权利要求6所述的方法,其特征在于,还包括:
所述第一管理模块按照虚拟display音频焦点机制维护所述第一焦点管理记录;
所述虚拟display音频焦点机制包括:在同一个虚拟display中有两个或两个以上应用,且所述两个或两个以上应用同时申请音频焦点时,按照高优先级业务应用抢占低优先级业务的应用,和,同等优先级的业务应用遵循后申请应用抢占先申请应用的规则。
8.一种音频播放方法,其特征在于,所述方法包括:
第二管理模块接收投屏业务模块发送的第二请求,所述第二请求用于创建投屏的虚拟display,其中所述第二请求中包括;指定虚拟display名称、大小以及分辨率信息;
所述第二管理模块根据所述指定虚拟display名称、大小以及分辨率信息创建第一虚拟display;
所述第二管理模块向所述投屏业务模块发送所述第一虚拟display,以使所述虚拟投屏业务模块建立所述第一虚拟display和第一虚拟音频设备之间的第一绑定关系。
9.根据权利要求8所述的方法,其特征在于,还包括:
所述第二管理模块接收所述投屏业务模块发送的所述第一绑定关系;
所述第二管理模块向所述第一管理模块发送所述第一绑定关系。
10.根据权利要求8或9所述的方法,其特征在于,还包括:
当第一应用请求播放音频流时,所述第二管理模块获取第一应用的标识;
所述第二管理模块根据所述第一应用的标识查找第一应用所属的第一虚拟display;
所述第二管理模块向所述第一管理模块发送所述第一虚拟display。
11.根据权利要求10所述的方法,其特征在于,所述第二管理模块获取第一应用的标识,包括:
所述第二管理模块在所述第一应用请求申请音频焦点时,接收所述第一管理模块发送的音频焦点请求,所述音频焦点请求中包括所述第一应用的标识。
12.根据权利要求10所述的方法,其特征在于,所述第二管理模块获取第一应用的标识,包括:
所述第二管理模块在所述原生音频框架获取第一应用播放的音频流时,接收所述第一管理模块发送的所述第一应用的标识。
13.一种音频播放方法,其特征在于,所述方法包括:
投屏业务模块在获取用户启动投屏业务的操作时,获取第二管理模块创建的第一虚拟显示屏display;
所述投屏业务模块在与期望投屏的第一设备建立虚拟音频链路后,向所述第一管理模块发送第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;
所述投屏业务模块接收所述第一管理模块发送的第一虚拟音频设备的设备标识;
所述投屏业务模块建立第一绑定关系,所述第一绑定关系包括所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的对应关系;
所述投屏业务模块向所述第一管理模块发送所述第一绑定关系。
14.根据权利要求13所述的方法,其特征在于,所述获取第二管理模块创建的第一虚拟显示屏display,包括:
所述投屏业务模块向所述第二管理模块发送第二请求,所述第二请求用于请求所述第二管理模块创建虚拟display;
所述投屏业务模块接收所述第二管理模块根据所述第二请求创建的所述第一虚拟display。
15.根据权利要求13或14所述的方法,其特征在于,还包括:
当获取用户断开投屏业务的操作时,解除所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的第一绑定关系;
所述投屏业务模块向所述第一管理模块发送第一消息,所述第一消息用于通知所述第一管理模块删除所述第一绑定关系。
16.一种管理装置,其特征在于,应用于第一管理模块,所述第一管理模块包括:
第一接收单元,用于当终端设备启动投屏业务时,接收投屏业务模块发送的第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;
第一发送单元,用于向硬件抽象层HAL发送所述第一请求;
所述第一接收单元,还用于接收所述HAL发送的第一虚拟音频设备的设备标识,所述第一虚拟音频设备根据所述第一设备的相关信息创建;
所述第一发送单元,还用于向所述投屏业务模块发送所述第一虚拟音频设备的设备标识,以使所述虚拟投屏业务模块建立虚拟显示屏display和所述第一虚拟音频设备之间的绑定关系。
17.根据权利要求16所述的装置,其特征在于,
所述第一接收单元,还用于接收所述投屏业务模块发送的第一绑定关系,所述第一绑定关系包括第一虚拟显示屏display和所述第一虚拟音频设备的设备标识之间的对应关系;
第一处理单元,用于当第一应用请求播放音频流时确定第一虚拟display,根据所述第一虚拟display在所述第一绑定关系中查找第一虚拟音频设备的设备标识;
所述第一发送单元,还用于向原生音频框架发送所述第一虚拟音频设备的设备标识,以使所述原生音频框架将对应的音频流通过所述第一虚拟音频设备输出到第一设备。
18.根据权利要求17所述的装置,其特征在于,
所述第一接收单元,还用于获取第一应用的标识;
所述第一发送单元,还用于向第二管理模块发送所述第一应用的标识;
所述第一接收单元,还用于接收所述第二管理模块根据所述第一应用的标识确定的所述第一虚拟display。
19.根据权利要求17或18所述的装置,其特征在于,
所述第一处理单元,还用于根据所述第一虚拟display确定第一音频焦点,所述第一音频焦点与所述第一虚拟display相对应,查询所述第一音频焦点的状态是否可用;
所述第一发送单元,还用于在所述第一处理单元查询所述第一音频焦点可用时,向所述原生音频框架发送所述第一音频焦点。
20.根据权利要求19所述的装置,其特征在于,
所述第一处理单元,还用于在查询所述第一音频焦点的状态不可用时,确定占用所述第一音频焦点的应用为第二应用;
所述第一发送单元,还用于向所述原生音频框架发送第一指示信息,所述第一指示信息用于通知所述原生音频框架所述第一音频焦点需要被所述第一应用占用;以及,当所述第一接收单元接收到所述第二应用停止使用所述第一音频焦点的指示时,向所述原生音频框架发送所述第一音频焦点,以使所述第一应用获取所述第一音频焦点。
21.根据权利要求19所述的装置,其特征在于,所述第一管理模块查询所述第一音频焦点的状态是否可用之前,还包括:
所述第一处理单元,还用于获取第一虚拟display所关联的第一焦点管理记录,以及在所述第一焦点管理记录查询所述第一音频焦点的状态是否为空闲;
其中,所述第一焦点管理记录中包括第一音频焦点的状态,所述第一音频焦点的状态包括空闲和使用,所述第一虚拟display唯一对应所述第一音频焦点。
22.根据权利要求21所述的装置,其特征在于,
所述第一处理单元,还用于按照虚拟display音频焦点机制维护所述第一焦点管理记录;
所述虚拟display音频焦点机制包括:在同一个虚拟display中有两个或两个以上应用,且所述两个或两个以上应用同时申请音频焦点时,按照高优先级业务应用抢占低优先级业务的应用,和,同等优先级的业务应用遵循后申请应用抢占先申请应用的规则。
23.一种管理装置,其特征在于,应用于第二管理模块,所述第二管理模块包括:
第二接收单元,用于接收投屏业务模块发送的第二请求,所述第二请求用于创建投屏的虚拟display,其中所述第二请求中包括;指定虚拟display名称、大小以及分辨率信息;
第二处理单元,用于根据所述指定虚拟display名称、大小以及分辨率信息创建第一虚拟display;
第二发送单元,用于向所述投屏业务模块发送所述第一虚拟display,以使所述虚拟投屏业务模块建立所述第一虚拟display和第一虚拟音频设备之间的第一绑定关系。
24.根据权利要求23所述的装置,其特征在于,
所述第二接收单元,还用于接收所述投屏业务模块发送的所述第一绑定关系;
所述第二发送单元,还用于向所述第一管理模块发送所述第一绑定关系。
25.根据权利要求23或24所述的装置,其特征在于,
所述第二接收单元,还用于当第一应用请求播放音频流时,所述第二管理模块获取第一应用的标识;
所述第二处理单元,还用于根据所述第一应用的标识查找第一应用所属的第一虚拟display;
所述第二发送单元,还用于向所述第一管理模块发送所述第一虚拟display。
26.根据权利要求25所述的装置,其特征在于,
所述第二接收单元,还用于在所述第一应用请求申请音频焦点时,接收所述第一管理模块发送的音频焦点请求,所述音频焦点请求中包括所述第一应用的标识。
27.根据权利要求25所述的装置,其特征在于,
所述第二接收单元,还用于在所述原生音频框架获取第一应用播放的音频流时,接收所述第一管理模块发送的所述第一应用的标识。
28.一种应用装置,其特征在于,应用于投屏业务模块,所述投屏业务模块包括:
第三接收单元,用于在获取用户启动投屏业务的操作时,获取第二管理模块创建的第一虚拟显示屏display;
第三发送单元,用于在与期望投屏的第一设备建立虚拟音频链路后,向所述第一管理模块发送第一请求,所述第一请求用于请求创建虚拟音频设备,所述第一请求中包括用户期望投屏的第一设备的相关信息;
所述第三接收单元,还用于接收所述第一管理模块发送的第一虚拟音频设备的设备标识;
第三处理单元,用于所述投屏业务模块建立第一绑定关系,所述第一绑定关系包括所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的对应关系;
所述第三发送单元,还用于向所述第一管理模块发送所述第一绑定关系。
29.根据权利要求28所述的装置,其特征在于,
所述第三发送单元,还用于向所述第二管理模块发送第二请求,所述第二请求用于请求所述第二管理模块创建虚拟display;
所述第三接收单元,还用于接收所述第二管理模块根据所述第二请求创建的所述第一虚拟display。
30.根据权利要求28或29所述的装置,其特征在于,
所述第三处理单元,还用于当获取用户断开投屏业务的操作时,解除所述第一虚拟display和所述第一虚拟音频设备的设备标识之间的第一绑定关系;
所述第三接收单元,还用于向所述第一管理模块发送第一消息,所述第一消息用于通知所述第一管理模块删除所述第一绑定关系。
31.一种终端设备,其特征在于,包括:至少一个处理器和存储器,
所述存储器,用于存储计算机程序指令;
所述至少一个处理器,用于执行所述指令,以实现如权利要求1至15中任一项所述的方法。
32.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序指令;
当所述计算机程序指令被运行时,实现如权利要求1至15中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110497072.1A CN115314584A (zh) | 2021-05-07 | 2021-05-07 | 一种音频播放方法、装置和设备 |
PCT/CN2022/088205 WO2022233237A1 (zh) | 2021-05-07 | 2022-04-21 | 一种音频播放方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110497072.1A CN115314584A (zh) | 2021-05-07 | 2021-05-07 | 一种音频播放方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115314584A true CN115314584A (zh) | 2022-11-08 |
Family
ID=83853822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110497072.1A Pending CN115314584A (zh) | 2021-05-07 | 2021-05-07 | 一种音频播放方法、装置和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115314584A (zh) |
WO (1) | WO2022233237A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106792055A (zh) * | 2016-12-28 | 2017-05-31 | 福建星网视易信息系统有限公司 | 实时投屏方法、设备及系统 |
CN109032555A (zh) * | 2018-07-06 | 2018-12-18 | 广州视源电子科技股份有限公司 | 投屏中音频数据处理方法、装置、存储介质及电子设备 |
CN110248022A (zh) * | 2019-06-06 | 2019-09-17 | 武汉卡比特信息有限公司 | 一种基于手机互联的三方应用的投屏方法 |
CN111324327A (zh) * | 2020-02-20 | 2020-06-23 | 华为技术有限公司 | 投屏方法及终端设备 |
CN111634188A (zh) * | 2020-05-29 | 2020-09-08 | 北京百度网讯科技有限公司 | 用于投屏的方法和装置 |
CN111954028A (zh) * | 2020-10-19 | 2020-11-17 | 深圳乐播科技有限公司 | 音频数据的投屏方法、装置、设备及存储介质 |
WO2021051989A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种视频通话的方法及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102481894B1 (ko) * | 2017-11-06 | 2022-12-28 | 삼성전자 주식회사 | 전자 장치 및 이를 이용한 화면 공유 방법 |
CN109889885A (zh) * | 2019-02-27 | 2019-06-14 | 努比亚技术有限公司 | 一种投屏控制方法、终端及计算机可读存储介质 |
-
2021
- 2021-05-07 CN CN202110497072.1A patent/CN115314584A/zh active Pending
-
2022
- 2022-04-21 WO PCT/CN2022/088205 patent/WO2022233237A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106792055A (zh) * | 2016-12-28 | 2017-05-31 | 福建星网视易信息系统有限公司 | 实时投屏方法、设备及系统 |
CN109032555A (zh) * | 2018-07-06 | 2018-12-18 | 广州视源电子科技股份有限公司 | 投屏中音频数据处理方法、装置、存储介质及电子设备 |
CN110248022A (zh) * | 2019-06-06 | 2019-09-17 | 武汉卡比特信息有限公司 | 一种基于手机互联的三方应用的投屏方法 |
WO2021051989A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种视频通话的方法及电子设备 |
CN111324327A (zh) * | 2020-02-20 | 2020-06-23 | 华为技术有限公司 | 投屏方法及终端设备 |
CN111634188A (zh) * | 2020-05-29 | 2020-09-08 | 北京百度网讯科技有限公司 | 用于投屏的方法和装置 |
CN111954028A (zh) * | 2020-10-19 | 2020-11-17 | 深圳乐播科技有限公司 | 音频数据的投屏方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022233237A1 (zh) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110958475A (zh) | 一种跨设备的内容投射方法及电子设备 | |
WO2022089207A1 (zh) | 一种跨设备应用交互方法、电子设备与服务器 | |
JP7369281B2 (ja) | デバイス能力スケジューリング方法および電子デバイス | |
CN114697527B (zh) | 一种拍摄方法、系统及电子设备 | |
CN112995727A (zh) | 一种多屏协同方法、系统及电子设备 | |
CN114968384B (zh) | 一种功能调用方法和装置 | |
CN115016706B (zh) | 一种线程的调度方法及电子设备 | |
CN114741008A (zh) | 分布式跨设备协同方法、电子设备及通信系统 | |
WO2022247455A1 (zh) | 一种音频分流的方法及电子设备 | |
CN115002842B (zh) | 数据传输的方法、电子设备及可读存储介质 | |
WO2023005711A1 (zh) | 一种服务的推荐方法及电子设备 | |
CN115314584A (zh) | 一种音频播放方法、装置和设备 | |
CN114780268A (zh) | 通知消息的显示方法及电子设备 | |
CN113835802A (zh) | 设备交互方法、系统、设备及计算机可读存储介质 | |
CN114116072A (zh) | 一种共享库的复用方法及电子设备 | |
CN115002820B (zh) | 通话状态监听方法、装置、设备、存储介质 | |
CN114916017B (zh) | 数据传输的方法、电子设备及可读存储介质 | |
CN116709557B (zh) | 业务处理方法、设备及存储介质 | |
CN116743761B (zh) | 一种协同工作的方法及电子设备 | |
CN115002821B (zh) | 通话状态监听方法、装置、设备、存储介质 | |
CN116679998B (zh) | 多设备协同冲突处理的方法及电子设备 | |
CN117119097B (zh) | 一种来电共振的方法、设备及存储介质 | |
CN117135532B (zh) | 音频数据处理方法、设备和存储介质 | |
WO2024140496A1 (zh) | 一种音频播放方法及电子设备 | |
WO2023011220A1 (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 |