CN106897146A - 一种终端的麦克风的数据处理方法和具有麦克风的终端 - Google Patents
一种终端的麦克风的数据处理方法和具有麦克风的终端 Download PDFInfo
- Publication number
- CN106897146A CN106897146A CN201710071670.6A CN201710071670A CN106897146A CN 106897146 A CN106897146 A CN 106897146A CN 201710071670 A CN201710071670 A CN 201710071670A CN 106897146 A CN106897146 A CN 106897146A
- Authority
- CN
- China
- Prior art keywords
- recording
- thread
- service end
- application
- client
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明实施例公开了一种终端的麦克风的数据处理方法和具有麦克风的终端,涉及移动终端技术领域,用以解决现有技术中多个应用无法同时开启录音功能的问题。该方法包括:当第一应用开启录音功能时,获取录音开启指令,创建第一应用对应的第一客户端线程;检测服务端线程是否已创建,其中,服务端线程与麦克风通信,还与多个客户端线程通信,每个客户端线程对应一个开启录音功能的应用;若已创建,则通过第一客户端线程将录音开启指令发送给服务端线程,通过服务端线程获取由麦克风采集到的录音数据,将所采集的录音数据分发至第一客户端线程,通过第一客户端线程将分发的录音数据返回给第一应用。
Description
技术领域
本发明涉及移动终端技术领域,尤其涉及一种终端的麦克风的数据处理方法和具有麦克风的终端。
背景技术
在移动互联网时代,随着智能终端的推广和普及,终端的录音功能愈来愈智能化。例如在Android***中,录音机,语音识别,语音搜索,视频通话等应用都会用到麦克风的录音功能。
参考图1所示,现有技术中应用获取录音的过程主要包括以下几个模块:应用(Application)、操作***的录音模块、硬件抽象层(HAL)、录音硬件部分(Hardware)(包括麦克风和DSP等,为了便于描述以下都用麦克风替代录音硬件部分进行简单说明)。其中,应用包括录音机、语音输入、语音搜索等需要录制声音的应用,应用开启录音功能;操作***的录音模块属于Android操作***,包括Framework应用框架,用于传递录音开启命令和录音数据;HAL是位于操作***内核(Linux内核驱动)与上层录音模块之间的接口层,其目的在于将硬件抽象化;麦克风用于根据录音开启命令采集录音数据。具体的操作***包括:Java接口、JNI接口(C++与Java之间的接口)、AudioRecord.cpp(Android录音代码)、C++录音框架(AudioRecordThread)等。
现有技术应用获取录音的方式有两种,一种是通过Java接口的MediaRecorder(Android框架中的类)方式获取到编码过的数据(如录音机,录像等应用),另一种是通过Java接口的AudioRecord(Android框架中的类)获取原始的数据(如语音识别,语音指令,语音搜索,视频通话,语音输入法等应用)。两种方式的差别在上述的录音过程的Java接口->JNI(C++与Java之间的接口)->录音框架部分。
方式一是MediaRecorder方式,具体为:应用->MediaRecorder(java)->MediaRecorder(JNI)->编码部分(StagefrightRecorder)->AudioRecord.cpp->AudioRecordThread->HAL->麦克风。
方式二是AudioRecord方式,具体为:应用->AudioRecord(java)->AudioRecord(JNI)->AudioRecord.cpp->AudioRecordThread->HAL->麦克风。
应用程序各式各样,每个应用可能会有不同的需求,因而会设置不同的录音参数等。相应的录音参数会通过上述过程传递给麦克风,当麦克风收到录音开启指令之后,会按照应用下达的录音参数开启,然后将采集到的录音数据按照与上述顺序相反的顺序从麦克风传输至应用。当麦克风正以一应用设置的固定录音参数运行采集录音数据的过程中,如果有第二个应用要开启录音功能,这时为防止参数冲突,会阻止第二个应用开启录音功能,操作***将会报错,第二个应用无法开启录音功能,以至于无法获取麦克风的录音数据。
发明内容
本发明的实施例提供一种终端的麦克风的数据处理方法和具有麦克风的终端,用以解决现有技术中多个应用无法同时开启录音功能的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种终端的麦克风的数据处理方法,所述方法包括:
当第一应用开启录音功能时,获取录音开启指令,创建所述第一应用对应的第一客户端线程;
检测服务端线程是否已创建,其中,所述服务端线程与麦克风通信,还与多个客户端线程通信,每个客户端线程对应一个开启录音功能的应用;
若已创建,则通过第一客户端线程将所述录音开启指令发送给所述服务端线程,通过所述服务端线程获取由所述麦克风采集到的录音数据,将所采集的录音数据分发至第一客户端线程,通过所述第一客户端线程将分发的录音数据返回给所述第一应用。
第二方面,本发明实施例提供了一种具有麦克风的终端,所述终端包括:
录音模块,所述录音模块与麦克风连接,用于当第一应用开启录音功能时,获取录音开启指令,创建所述第一应用对应的第一客户端线程;检测服务端线程是否已创建,其中,所述服务端线程与麦克风通信,还与多个客户端线程通信,每个客户端线程对应一个开启录音功能的应用;若已创建,则通过所述第一客户端线程将所述录音开启指令发送给所述服务端线程,通过所述服务端线程获取由所述麦克风采集到的录音数据,将所采集的录音数据分发至第一客户端线程,通过所述第一客户端线程将分发的录音数据返回给所述第一应用。
本发明实施例提供了一种终端的麦克风的数据处理方法和具有麦克风的终端,当第一应用开启录音功能时,终端获取录音开启指令,创建第一应用对应的第一客户端线程;检测服务端线程是否已创建;若已创建,则不在创建服务端线程。然后通过第一客户端线程将录音开启指令发送给服务端线程;通过服务端线程获取由麦克风采集到的录音数据,将录音数据分发给第一客户端线程;通过第一客户端线程将录音数据返回给第一应用。这样通过在终端中增加与应用一一对应的客户端线程和所有应用对应的服务端线程,并通过服务端线程与多个客户端线程的通信,将现有技术的单一线程转换为多个线程,支持多个应用可以同时获取录音数据,从而实现多应用可以同时开启录音功能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的一种应用开启录音功能并获取录音数据的框架图;
图2为本发明实施例提供的一种应用开启录音功能并获取录音数据的框架图;
图3为本发明实施例提供的一种终端的麦克风的数据处理方法的流程图;
图4为本发明实施例提供的一种具有麦克风的终端的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本发明实施例中字符“/”,一般表示前后关联对象是一种“或”的关系。
为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本发明实施例中“多个应用同时开启录音功能”的含义可以是多个应用同一时间开启录音功能,也可以是在至少一个应用开启录音功能且未关闭录音功能之前,又有其他应用开启了录音功能。应用调用麦克风就是指应用开启录音功能。
本发明实施例的工作原理在于修改JNI接口至HAL层之间的代码,即现有技术中录音模块中Android录音代码及C++录音框架这两部分。且在不修改应用软件、Java接口、JNI接口(接口部分为了保证现有以及将来新出现软件的兼容问题,也不做任何修改)、硬件抽象层、录音硬件部分的前提下,仅修改Android录音代码及C++录音框架,将原来的单一线程转换为多个线程,支持多个应用可以同时获取录音数据,从而实现多个应用可以同时开启录音功能。也就是说,本发明实施例在不修改应用软件和硬件部分的前提下,仅通过软件部分的修改,实现终端中的多个应用可以同时开启录音功能。
本发明实施例通过在Android录音代码及C++录音框架这两部分之间增加了客户端线程(RecordClientThread)和服务端线程(RecordServerThread),参考图2所示(图中以三个应用同时开启录音功能为例。)。当一应用开启录音功能时,录音模块会创建与该应用对应的客户端线程。然后检测服务端线程是否已创建,若服务端线程未创建,则创建服务端线程;若服务端线程已创建,则无需创建服务端线程。总之,在录音过程中,所有客户端线程都对应着同一个服务端线程,所有客户端线程获取的录音开启指令都传递给服务端线程,且服务端线程将获取的录音数据复制分发给所有客户端线程,所有客户端线程将收到的录音数据返回给对应的应用。
实施例一
本发明实施例提供了一种终端的麦克风的数据处理方法,该方法的执行主体可以是终端,也可以是终端中的软件或硬件,示例的,可以是终端中的录音模块。参考图3所示,该方法包括以下步骤:
S101、当第一应用开启录音功能时,终端获取录音开启指令。
当第一应用开启录音功能时,会向终端发出录音开启指令,该录音开启指令包括第一应用所需的录音参数、开启麦克风指令和返回录音数据。其中,录音参数包括下述的一种或多种:采样率,声道数,和录音格式。优选的,录音参数包括采样率,声道数,和录音格式等其他设定录音效果的参数,这样可以得到第一应用所需的最优的录音数据。
需要说明的是:第一应用指的是任何一个开启录音功能的应用。
终端获取该录音开启指令,并按照该录音开启指令开启麦克风。
S102、终端创建第一应用对应的第一客户端线程。
当第一应用开启录音功能时,终端通过依次调用Java接口、JNI接口、AudioRecord.cpp,当AudioRecord.cpp获取了录音开启指令之后,创建与该第一应用对应的第一客户端线程。应用与客户端线程是一一对应的。
当第一应用关闭录音功能时,终端关闭第一应用对应的客户端线程。具体的,终端获取到录音关闭指令,通过AudioRecord.cpp根据该录音关闭指令,将与第一应用对应的客户端线程关闭,并且同时向服务端线程发送录音关闭指令。当然也可以等所有应用都关闭录音功能时,再将所有的客户端线程关闭,或者等手机关机时,将所有的客户端线程关闭。
S103、终端检测服务端线程是否已创建。
其中,服务端线程与麦克风通信,还与多个客户端线程通信,每个客户端线程对应一个开启录音功能的应用。
所有的客户端线程与同一个服务端线程通信。当服务端线程创建之后,***中会保存与其相关的信息,这样终端创建了与应用对应的客户端线程之后,会先判断是否已经存在服务端线程的信息,如果存在,也就是说,通过与其他应用对应的客户端线程已经创建了服务端线程,那么就不需再创建服务端线程,如果不存在,也就是说,目前还没有与应用对应的客户端线程创建服务端线程,那就需要创建服务端线程。
若服务端线程未创建,则执行步骤S104(可选的)-S107(可选的);若服务端线程已创建,则S108-S110。
S104(可选的)、终端创建服务端线程。
终端通过与第一应用对应的第一客户端线程检测到服务端线程还未创建,通过第一客户端线程创建服务端线程。
S105(可选的)、终端通过第一客户端线程将录音开启指令发送给服务端线程。
终端通过客户端线程将录音开启指令中的录音参数、开启麦克风指令和返回录音数据等都发送给服务端线程。
S106(可选的)、终端通过服务端线程根据录音开启指令开启麦克风,并获取由麦克风采集到的录音数据,将所采集的录音数据分发给第一客户端线程。
步骤一开启麦克风。
具体的,依次通过服务端线程、AudioRecordThread将录音开启指令传递给HAL,通过HAL来开启麦克风。
步骤二获取麦克风采集到的录音数据。
服务端线程通过AudioRecordThread从麦克风中获得录音数据。
可选的,由麦克风采集到的录音数据为麦克风按照第一应用所需的录音参数采集到的录音数据。
优选的,由麦克风采集到的录音数据为麦克风按照预设的录音参数采集到的录音数据。
总之,在整个录音过程中,麦克风始终以一个固定的录音参数来采集录音数据。这个固定的录音参数可以是第一个开启录音功能的应用所需的录音参数,即其他应用所需的录音参数不会作用到麦克风上;优选的这个固定的录音参数是***预设的录音参数,即所有应用所需的录音参数都不会作用到麦克风上。
需要说明的是,在现有技术中,麦克风是按照其出厂时设置的固定的录音参数采集录音数据的,然后通过DSP等其他硬件部分对采集到的录音数据进行转换处理,以获得应用所需的录音数据,再通过硬件抽象层将应用所需的录音数据返回给C++录音框架,最后在一步步返回给应用。在本发明实施例中的麦克风是代表录音硬件部分(包括DSP、麦克风等),而不仅仅是指实际上的麦克风,因此麦克风的录音参数是可以设置的。
步骤三将所采集的录音数据分发给第一客户端线程。
服务端线程将所采集的录音数据复制分别发送给各个客户端线程。
S107(可选的)、终端通过第一客户端线程将所分发的录音数据返回给第一应用。
返回给应用的录音数据的内容一定是应用需要的,但录音效果不一定是应用需要的,即返回给应用的录音数据可能不符合应用所需的录音参数。具体的,依次通过第一客户端线程、(StagefrightRecorder)、JNI接口、Java接口等将录音数据返回给第一应用。
第一应用是第一个开启录音功能的应用。
可选的,若由麦克风采集到的录音数据为麦克风按照第一应用所需的录音参数采集到的录音数据,则返回给第一应用的录音参数的录音效果是第一应用所需的。
优选的,若由麦克风采集到的录音数据为麦克风按照预设的录音参数采集到的录音数据,终端依次通过服务端线程、第一客户端线程、JNI接口、Java接口等直接将录音数据返回给第一应用,第一应用获得的录音数据的录音效果则不是第一应用所需的。
优选的,若由麦克风采集到的录音数据为麦克风按照预设的录音参数采集到的录音数据,则终端在通过第一客户端线程将所分发的录音数据返回给第一应用之前,将所分发的录音数据按照第一应用所需的录音参数进行转换处理。这里的转换方法可以使用现有技术中的任一种,只要能将录音数据转换成第一应用所需的即可,示例的,可以是将录音数据按照第一应用所需的录音参数进行重采样,以获得第一应用所需的录音数据。
具体的,终端将录音数据按照第一应用所需的录音参数进行转换处理之后,再返回给第一应用,这样第一应用会得到按照其录音参数采集的录音数据。需要说明的是:若需要将由麦克风采集到的录音数据进行转换处理,进行转换处理的过程可以发生在服务端线程和客户端线程之间,也可以发生在客户端线程获得该录音数据之后,也可以是其他合理位置,在此不再赘述。
S108、终端通过第一客户端线程将录音开启指令发送给服务端线程。
第一客户端线程将录音开启指令中的录音参数、开启麦克风指令和返回录音数据等都发送给服务端线程。
S109、终端通过服务端线程获取由麦克风采集到的录音数据,将所采集的录音数据分发至第一客户端线程。
服务端线程通过AudioRecordThread从麦克风中获得录音数据。
可选的,由麦克风采集到的录音数据为麦克风按照第一应用所需的录音参数采集到的录音数据。
优选的,由麦克风采集到的录音数据为麦克风按照预设的录音参数采集到的录音数据。
总之,在整个录音过程中,麦克风始终以一个固定的录音参数来采集录音数据。这个固定的录音参数可以是第一个开启录音功能的应用所需的录音参数,即其他应用所需的录音参数不会作用到麦克风上;优选的这个固定的录音参数是***预设的录音参数,即所有应用所需的录音参数都不会作用到麦克风上。
服务端线程将获得的录音数据复制一份发送给第一客户端线程。
S110、终端通过第一客户端线程将分发的录音数据返回给第一应用。
返回给应用的录音数据的内容一定是应用需要的,但录音效果不一定是应用需要的,即返回给应用的录音数据可能不符合应用所需的录音参数。具体的,依次通过第一客户端线程、(StagefrightRecorder)、JNI接口、Java接口等将录音数据返回给第一应用。
第一应用不是第一个开启录音功能的应用,因此无论由麦克风采集到的录音数据为麦克风按照第一个开启录音功能的应用所需的录音参数采集到的录音数据,还是按照预设的录音参数采集到的录音数据,该录音数据的效果都不是该应用所需的。
可选的,可以直接将由麦克风采集到的录音数据发送给与第一应用对应的第一客户端线程,只是这时候该录音数据的内容是第一应用需要的,但该录音数据的效果不是第一应用需要的,也就是说第一应用会得到一个没有按照其录音参数采集的录音数据。
优选的,将由麦克风采集到的录音数据按照第一应用所需的录音参数进行转换处理之后,再发送给第一客户端线程,这样第一应用会得到按照其录音参数采集的录音数据。需要说明的是:若需要将由麦克风采集到的录音数据进行转换处理,进行转换处理的过程可以发生在服务端线程和客户端线程之间,也可以发生在客户端线程获得该录音数据之后,也可以是其他合理位置,在此不再赘述。
在本发明实施例中,还通过开启计时器计数来统计有多少应用同时在使用录音功能。
可选的,在创建服务端线程之后,通过服务端线程开启计数器,计数器初始值为0;当服务端线程收到录音开启指令时,通过服务端线程将计数器加1;当服务端线程收到录音关闭指令时,通过服务端线程将计数器减1;当计数器为0时,通过服务端线程关闭麦克风,并退出。
具体的,当在步骤S104(可选的)中终端创建了服务端线程之后,终端通过服务端线程立即开启计数器,计数器初始值为0。当服务端线程收到一次录音开启指令时,将计数器加1,说明开启录音功能的应用加1,服务端线程要将获得的录音数据多复制一份发送给对应的客户端线程;当服务端线程收到一次录音关闭指令时,将计数器减1,说明有一个应用关闭了录音功能,开启录音功能的应用减1,服务端线程要将获得的录音数据少复制一份发送给对应的客户端线程;当计数器为0时,说明所有应用都关闭了录音功能,服务端线程无需再获得录音数据并复制发送给各个客户端线程,服务端线程关闭麦克风并退出,这样可以节约资源。
可选的,当检测到服务端线程未创建时,开启计数器,计数器初始值为0;当创建服务端线程之后,计数器加1;当检测到服务端线程已创建时,将计数器加1;当获取到录音关闭指令时,将计数器减1;当计数器为0时,关闭服务端线程,并关闭麦克风。
具体的,当在步骤S103中检测到服务端线程未创建时,终端立即开启计数器,计数器初始值为0,当创建服务端线程之后,计数器加1,说明第一个应用开启了录音功能;当检测到服务端线程已创建时,将计数器加1,说明又有一个应用开启了录音功能;当获取到录音关闭指令时,将计数器减1,说明有一个应用关闭了录音功能;当计数器为0时,说明所有应用都关闭了录音功能,终端关闭服务端线程,并关闭麦克风,以节约资源。
本发明实施例提供了一种终端的麦克风的数据处理方法,通过增加与麦克风通信的服务端线程和对应一个开启录音功能的应用的客户端线程,而且服务端线程还与多个客户端线程通信,将现有技术录音模块的单一线程转换为多个线程,支持多个应用可以同时获取录音数据,从而实现多应用可以同时开启录音功能。
实施例二
本发明实施例提供了一种具有麦克风的终端,其中各个功能模块的实现可以参考上述实施例,在此不再赘述。参考图4所示,所述终端包括:
录音模块11,所述录音模块11与麦克风12连接,用于当第一应用开启录音功能时,获取录音开启指令,创建所述第一应用对应的第一客户端线程111;检测服务端线程112是否已创建,其中,所述服务端线程112与麦克风12通信,还与多个客户端线程111通信,每个客户端线程111对应一个开启录音功能的应用;若已创建,则通过所述第一客户端线程111将所述录音开启指令发送给所述服务端线程112,通过所述服务端线程112获取由所述麦克风12采集到的录音数据,将所采集的录音数据分发至第一客户端线程111,通过所述第一客户端线程111将分发的录音数据返回给所述第一应用。
可选的,所述录音模块11还用于:若未创建所述服务端线程112,则创建所述服务端线程112,通过所述第一客户端线程111将所述录音开启指令发送给所述服务端线程112,通过所述服务端线程112根据所述录音开启指令开启麦克风12,并获取由所述麦克风12采集到的录音数据,将所采集的录音数据分发给所述第一客户端线程111,通过所述第一客户端线程111将所分发的录音数据返回给所述第一应用。
可选的,所述录音开启指令包括所述第一应用所需的录音参数,所述录音参数包括下述的一种或多种:采样率,声道数,和录音格式;所述录音模块11,还用于在通过所述第一客户端线程111将所分发的录音数据返回给所述第一应用之前,将所分发的录音数据按照所述第一应用所需的录音参数进行转换处理。
可选的,所述录音模块11还用于:当所述第一应用关闭录音功能时,关闭所述第一客户端线程111。
可选的,所述录音模块11,还用于在创建所述服务端线程112之后,通过所述服务端线程112开启计数器,所述计数器初始值为0;当所述服务端线程112收到录音开启指令时,通过所述服务端线程112将所述计数器加1;当所述服务端线程112收到录音关闭指令时,通过所述服务端线程将112所述计数器减1;当所述计数器为0时,通过所述服务端线程112关闭所述麦克风,并退出。
需要说明的是,本实施例中的模块可以为单独设立的处理器,也可以集成在终端的某一个处理器中实现,此外,也可以以程序代码的形式存储于终端的存储器中,由终端的某一个处理器调用并执行以上各个单元的功能。这里所述的处理器可以是一个中央处理器(英文全称:Central Processing Unit,英文简称:CPU),或者是特定集成电路(英文全称:Application Specific Integrated Circuit,英文简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
本发明实施例提供了一种具有麦克风的终端,通过增加与麦克风通信的服务端线程和对应一个开启录音功能的应用的客户端线程,而且服务端线程还与多个客户端线程通信,将现有技术录音模块的单一线程转换为多个线程,支持多个应用可以同时获取录音数据,从而实现多应用可以同时开启录音功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种终端的麦克风的数据处理方法,其特征在于,所述方法包括:
当第一应用开启录音功能时,获取录音开启指令,创建所述第一应用对应的第一客户端线程;
检测服务端线程是否已创建,其中,所述服务端线程与麦克风通信,还与多个客户端线程通信,每个客户端线程对应一个开启录音功能的应用;
若已创建,则通过第一客户端线程将所述录音开启指令发送给所述服务端线程,通过所述服务端线程获取由所述麦克风采集到的录音数据,将所采集的录音数据分发至第一客户端线程,通过所述第一客户端线程将分发的录音数据返回给所述第一应用。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若未创建所述服务端线程,则创建所述服务端线程,通过所述第一客户端线程将所述录音开启指令发送给所述服务端线程,通过所述服务端线程根据所述录音开启指令开启麦克风,并获取由所述麦克风采集到的录音数据,将所采集的录音数据分发给所述第一客户端线程,通过所述第一客户端线程将所分发的录音数据返回给所述第一应用。
3.根据权利要求1或2所述的方法,其特征在于,所述录音开启指令包括所述第一应用所需的录音参数,所述录音参数包括下述的一种或多种:采样率,声道数,和录音格式;
所述方法还包括:
通过所述第一客户端线程将所分发的录音数据返回给所述第一应用之前,将所分发的录音数据按照所述第一应用所需的录音参数进行转换处理。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一应用关闭录音功能时,关闭所述第一客户端线程。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在创建所述服务端线程之后,通过所述服务端线程开启计数器,所述计数器初始值为0;
当所述服务端线程收到录音开启指令时,通过所述服务端线程将所述计数器加1;
当所述服务端线程收到录音关闭指令时,通过所述服务端线程将所述计数器减1;
当所述计数器为0时,通过所述服务端线程关闭所述麦克风,并退出。
6.一种具有麦克风的终端,其特征在于,所述终端包括:
录音模块,所述录音模块与麦克风连接,用于当第一应用开启录音功能时,获取录音开启指令,创建所述第一应用对应的第一客户端线程;检测服务端线程是否已创建,其中,所述服务端线程与麦克风通信,还与多个客户端线程通信,每个客户端线程对应一个开启录音功能的应用;若已创建,则通过所述第一客户端线程将所述录音开启指令发送给所述服务端线程,通过所述服务端线程获取由所述麦克风采集到的录音数据,将所采集的录音数据分发至第一客户端线程,通过所述第一客户端线程将分发的录音数据返回给所述第一应用。
7.根据权利要求6所述的终端,其特征在于,所述录音模块还用于:
若未创建所述服务端线程,则创建所述服务端线程,通过所述第一客户端线程将所述录音开启指令发送给所述服务端线程,通过所述服务端线程根据所述录音开启指令开启麦克风,并获取由所述麦克风采集到的录音数据,将所采集的录音数据分发给所述第一客户端线程,通过所述第一客户端线程将所分发的录音数据返回给所述第一应用。
8.根据权利要求6或7所述的终端,其特征在于,所述录音开启指令包括所述第一应用所需的录音参数,所述录音参数包括下述的一种或多种:采样率,声道数,和录音格式;
所述录音模块,还用于在通过所述第一客户端线程将所分发的录音数据返回给所述第一应用之前,将所分发的录音数据按照所述第一应用所需的录音参数进行转换处理。
9.根据权利要求6所述的终端,其特征在于,所述录音模块还用于:
当所述第一应用关闭录音功能时,关闭所述第一客户端线程。
10.根据权利要求7所述的终端,其特征在于,所述录音模块,还用于在创建所述服务端线程之后,通过所述服务端线程开启计数器,所述计数器初始值为0;
当所述服务端线程收到录音开启指令时,通过所述服务端线程将所述计数器加1;
当所述服务端线程收到录音关闭指令时,通过所述服务端线程将所述计数器减1;
当所述计数器为0时,通过所述服务端线程关闭所述麦克风,并退出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710071670.6A CN106897146A (zh) | 2017-02-09 | 2017-02-09 | 一种终端的麦克风的数据处理方法和具有麦克风的终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710071670.6A CN106897146A (zh) | 2017-02-09 | 2017-02-09 | 一种终端的麦克风的数据处理方法和具有麦克风的终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106897146A true CN106897146A (zh) | 2017-06-27 |
Family
ID=59198770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710071670.6A Pending CN106897146A (zh) | 2017-02-09 | 2017-02-09 | 一种终端的麦克风的数据处理方法和具有麦克风的终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106897146A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107957908A (zh) * | 2017-11-20 | 2018-04-24 | 深圳创维数字技术有限公司 | 一种麦克风共享方法、装置、计算机设备及存储介质 |
CN109471680A (zh) * | 2018-11-29 | 2019-03-15 | 深圳市车联天下信息科技有限公司 | 多模块录音方法、装置和车载辅助设备 |
CN109471606A (zh) * | 2018-10-12 | 2019-03-15 | 深圳市小畅科技有限公司 | 一种安卓平台实时录音并发处理的方法 |
CN109508230A (zh) * | 2018-09-29 | 2019-03-22 | 百度在线网络技术(北京)有限公司 | 音频数据的采集方法、装置与存储介质 |
CN109976697A (zh) * | 2017-12-28 | 2019-07-05 | 深圳市优必选科技有限公司 | 获取音频数据的方法及装置、设备、计算机可读存储介质 |
CN109976696A (zh) * | 2017-12-28 | 2019-07-05 | 深圳市优必选科技有限公司 | 获取音频数据的方法及装置、设备、计算机可读存储介质 |
CN110781014A (zh) * | 2019-10-28 | 2020-02-11 | 苏州思必驰信息科技有限公司 | 基于Android设备的录音数据的多进程分发方法与*** |
CN111209121A (zh) * | 2018-11-22 | 2020-05-29 | 深圳市优必选科技有限公司 | 应用程序的录音方法、终端设备及介质 |
CN111540385A (zh) * | 2020-04-26 | 2020-08-14 | 西安广和通无线软件有限公司 | 录音数据共用方法、装置、计算机设备和存储介质 |
CN111638966A (zh) * | 2020-05-28 | 2020-09-08 | 维沃移动通信有限公司 | 资源获取方法、装置及电子设备 |
CN112071337A (zh) * | 2019-06-10 | 2020-12-11 | 海信视像科技股份有限公司 | 一种录音控制方法、装置、服务器和显示设备 |
CN112071338A (zh) * | 2019-06-10 | 2020-12-11 | 海信视像科技股份有限公司 | 一种录音控制方法、装置和显示设备 |
CN115134452A (zh) * | 2021-03-26 | 2022-09-30 | 成都鼎桥通信技术有限公司 | 麦克风资源的调用方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299677A (zh) * | 2008-04-30 | 2008-11-05 | 中兴通讯股份有限公司 | 一种多进程共享同一服务进程的方法 |
WO2009152731A1 (zh) * | 2008-06-16 | 2009-12-23 | 腾讯科技(深圳)有限公司 | 一种游戏虚拟机及其实现的游戏开发***和方法 |
CN102469064A (zh) * | 2010-11-03 | 2012-05-23 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN102821340A (zh) * | 2012-06-07 | 2012-12-12 | 惠州Tcl移动通信有限公司 | 一种全音频通道动态调谐方法、装置及其智能终端 |
CN103280232A (zh) * | 2013-04-08 | 2013-09-04 | 北京小米科技有限责任公司 | 音频记录方法、装置及终端设备 |
CN106027487A (zh) * | 2016-04-28 | 2016-10-12 | 广州广电运通金融电子股份有限公司 | 一种硬件设备的访问管理方法及*** |
-
2017
- 2017-02-09 CN CN201710071670.6A patent/CN106897146A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299677A (zh) * | 2008-04-30 | 2008-11-05 | 中兴通讯股份有限公司 | 一种多进程共享同一服务进程的方法 |
WO2009152731A1 (zh) * | 2008-06-16 | 2009-12-23 | 腾讯科技(深圳)有限公司 | 一种游戏虚拟机及其实现的游戏开发***和方法 |
CN102469064A (zh) * | 2010-11-03 | 2012-05-23 | 中兴通讯股份有限公司 | 通信实现方法及通信设备 |
CN102821340A (zh) * | 2012-06-07 | 2012-12-12 | 惠州Tcl移动通信有限公司 | 一种全音频通道动态调谐方法、装置及其智能终端 |
CN103280232A (zh) * | 2013-04-08 | 2013-09-04 | 北京小米科技有限责任公司 | 音频记录方法、装置及终端设备 |
CN106027487A (zh) * | 2016-04-28 | 2016-10-12 | 广州广电运通金融电子股份有限公司 | 一种硬件设备的访问管理方法及*** |
Non-Patent Citations (1)
Title |
---|
SIGRLAMI: "Use microphone in multiple app simultaneously in Android", 《HTTPS://STACKOVERFLOW.COM/QUESTIONS/25402434/USE-MICROPHONE-IN-MULTIPLE-APP-SIMULTANEOUSLY-IN-ANDROID》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107957908A (zh) * | 2017-11-20 | 2018-04-24 | 深圳创维数字技术有限公司 | 一种麦克风共享方法、装置、计算机设备及存储介质 |
CN109976696A (zh) * | 2017-12-28 | 2019-07-05 | 深圳市优必选科技有限公司 | 获取音频数据的方法及装置、设备、计算机可读存储介质 |
CN109976696B (zh) * | 2017-12-28 | 2022-05-10 | 深圳市优必选科技有限公司 | 获取音频数据的方法及装置、设备、计算机可读存储介质 |
CN109976697A (zh) * | 2017-12-28 | 2019-07-05 | 深圳市优必选科技有限公司 | 获取音频数据的方法及装置、设备、计算机可读存储介质 |
CN109508230A (zh) * | 2018-09-29 | 2019-03-22 | 百度在线网络技术(北京)有限公司 | 音频数据的采集方法、装置与存储介质 |
CN109471606B (zh) * | 2018-10-12 | 2021-10-08 | 深圳市小畅科技有限公司 | 一种安卓平台实时录音并发处理的方法 |
CN109471606A (zh) * | 2018-10-12 | 2019-03-15 | 深圳市小畅科技有限公司 | 一种安卓平台实时录音并发处理的方法 |
CN111209121A (zh) * | 2018-11-22 | 2020-05-29 | 深圳市优必选科技有限公司 | 应用程序的录音方法、终端设备及介质 |
CN111209121B (zh) * | 2018-11-22 | 2023-05-23 | 深圳市优必选科技有限公司 | 应用程序的录音方法、终端设备及介质 |
CN109471680A (zh) * | 2018-11-29 | 2019-03-15 | 深圳市车联天下信息科技有限公司 | 多模块录音方法、装置和车载辅助设备 |
CN112071337A (zh) * | 2019-06-10 | 2020-12-11 | 海信视像科技股份有限公司 | 一种录音控制方法、装置、服务器和显示设备 |
CN112071338A (zh) * | 2019-06-10 | 2020-12-11 | 海信视像科技股份有限公司 | 一种录音控制方法、装置和显示设备 |
CN110781014A (zh) * | 2019-10-28 | 2020-02-11 | 苏州思必驰信息科技有限公司 | 基于Android设备的录音数据的多进程分发方法与*** |
CN110781014B (zh) * | 2019-10-28 | 2022-11-01 | 思必驰科技股份有限公司 | 基于Android设备的录音数据的多进程分发方法与*** |
CN111540385A (zh) * | 2020-04-26 | 2020-08-14 | 西安广和通无线软件有限公司 | 录音数据共用方法、装置、计算机设备和存储介质 |
CN111638966A (zh) * | 2020-05-28 | 2020-09-08 | 维沃移动通信有限公司 | 资源获取方法、装置及电子设备 |
CN115134452A (zh) * | 2021-03-26 | 2022-09-30 | 成都鼎桥通信技术有限公司 | 麦克风资源的调用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106897146A (zh) | 一种终端的麦克风的数据处理方法和具有麦克风的终端 | |
CN106911831A (zh) | 一种终端的麦克风的数据处理方法和具有麦克风的终端 | |
AU2016260156B2 (en) | Method and device for improving audio processing performance | |
CN101313482B (zh) | 确定音频设备的质量 | |
CN108446341A (zh) | 业务状态查询方法、装置、计算机设备和存储介质 | |
CN101930399A (zh) | 一种对软件测试进行记录的方法 | |
CN108600045A (zh) | 一种服务链路监控方法及装置 | |
CN106874259A (zh) | 一种基于状态机的语义解析方法及装置、设备 | |
CN101119522A (zh) | 一种模拟at命令上报的方法 | |
CN106302933A (zh) | 通话语音信息处理方法及终端 | |
CN108391020A (zh) | 一种通话控制方法、装置、设备及存储介质 | |
CN113422794A (zh) | 流量录制、回放处理方法、装置及电子设备 | |
CN106649164A (zh) | 一种硬件接口管理方法 | |
CN102427465A (zh) | 语音服务代理方法及装置、通过代理集成语音应用的*** | |
CN110232553A (zh) | 会议支援***以及计算机可读取的记录介质 | |
CN111627446A (zh) | 一种基于智能语音识别技术的通信会议*** | |
CN107958059A (zh) | 智能问答方法、装置、终端和计算机可读存储介质 | |
CN109976697A (zh) | 获取音频数据的方法及装置、设备、计算机可读存储介质 | |
CN103839547A (zh) | 比对语音操作信号以载入对应指令元素的***及其方法 | |
CN106953962A (zh) | 一种通话录音方法及装置 | |
CN106326095A (zh) | 一种测试脚本设定方法及*** | |
CN106897172A (zh) | ***设置方法、装置及终端 | |
CN106997313A (zh) | 一种应用程序的信号处理方法、***及终端设备 | |
CN107437165A (zh) | 智能设备事件管理方法、装置和*** | |
US20030050789A1 (en) | Method and apparatus for monitoring execution of a business process managed using a state machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170627 |