電子設備音頻共享方法及裝置與流程
2023-10-10 04:04:34
本發明涉及電子設備音頻共享方法及裝置。
背景技術:
微型電子計算機、移動終端等電子設備在日常生活中發揮著越來越重要的作用,越來越多的人擁有兩個或兩個以上的電子設備。不同電子設備相互連接,共享硬體或軟體資源,已經非常普遍。但目前不同電子設備往往具有不同的作業系統,這會影響電子設備之間共享硬體或軟體資源。例如,目前移動終端使用的作業系統主要有兩種,美國蘋果公司開發的IOS系統和開源的安卓(Android)系統。IOS系統電子設備(安裝IOS系統進行管理的電子設備)和Android系統電子設備(安裝Android系統進行管理的電子設備)之間還無法實現很多資源的共享。
此外,一些專門針對IOS系統電子設備開發的增強設備(例如充電手機殼、擴容手機殼等)或者可以和IOS系統電子設備配合使用的電子設備(例如可以由IOS系統上的應用作為管理軟體的智能手環、體重秤等),也不能很好的利用IOS系統電子設備的硬體資源,導致這些設備還要配備一套完整的硬體,既浪費資源又對設備本身造成一定的限制。
目前很多IOS系統電子設備(例如iphone手機)具有性能優良的音頻硬體,但其他電子設備如何共享這些音頻硬體,尚未見成熟的技術方案報導。
在說明書「背景技術」部分公開的內容,有助於本領域技術人員理解本發明的技術方案,但不應據此認為這些內容一定屬於現有技術或公知常識。
技術實現要素:
為了克服「背景技術」部分所反映的缺陷,在電子設備之間實現音頻硬體共享,本發明提供電子設備音頻共享方法及裝置。
電子設備音頻共享方法,包括:第一作業系統電子設備和第二作業系統電子設備通過生產者—消費者進程方式傳輸音頻數據。
進一步的,電子設備音頻共享方法,包括:
第一作業系統電子設備發送控制指令給第二作業系統,第一作業系統向設定的緩衝區寫入音頻數據,音頻數據傳輸給第二作業系統,被基於第二作業系統音頻庫的音頻單元消費。
基於第二作業系統音頻庫的音頻單元對獲得的音頻數據進行處理,通過第二作業系統音頻庫提供的API(Application Programming Interface,應用程式編程接口),使用第二作業系統電子設備的音頻輸出硬體播放。
進一步的,電子設備音頻共享方法,包括:
第一作業系統電子設備發送控制指令給第二作業系統。通過第二作業系統音頻庫提供的API獲得第二作業系統電子設備的音頻輸入硬體的音頻數據。基於第二作業系統音頻庫的音頻單元對獲得的音頻數據進行處理,寫入第一作業系統設定的緩衝區。
第一作業系統消費設定的緩衝區的音頻數據。
進一步的,第一作業系統電子設備發送控制指令給第二作業系統之前,第一作業系統電子設備和第二作業系統電子設備建立socket連接。
進一步的,第一作業系統為Android系統,第二作業系統為IOS系統。第一作業系統向設定的緩衝區寫入音頻數據,為Android系統的AudioTrack向設定的緩衝區寫入音頻數據。第一作業系統消費設定的緩衝區的音頻數據,為Android系統的AudioRecord消費設定的緩衝區的音頻數據。
進一步的,控制指令包括音頻數據的採樣率、聲道數、採樣深度等信息。
電子設備音頻共享裝置,包括音頻處理程序,音頻處理程序能夠調用基於第二作業系統音頻庫的音頻單元,在第一作業系統電子設備和第二作業系統電子設備之間通過生產者—消費者進程方式傳輸音頻數據。
進一步的,第一作業系統為Android系統,第二作業系統為IOS系統。
由於電子設備音頻共享裝置,是用於實現之前所述的電子設備音頻共享方法的,為了避免不必要的重複,電子設備音頻共享裝置中的一些描述進行了省略。本領域技術人員通過對照,能夠對電子設備音頻共享裝置有清晰、完整的認識。
本發明技術方案中,「包括」、「用於」等詞語應按照開放式表達方式理解。本領域技術人員通過閱讀本說明書並結合現有技術或公知常識能夠獲知的內容,本說明書中不再贅述。
本發明提供的電子設備音頻共享方法及裝置,實現了不同作業系統電子設備的音頻共享,例如Android系統電子設備在不同的使用環境中都能夠靈活可靠的共享IOS系統電子設備的音頻硬體,傳輸的音頻數據的音質高保真高質量,可以實現注諸如具有外放IOS系統音樂等功能的智能硬體。
附圖說明
圖1為具體實施方式中Android系統電子設備和IOS系統電子設備用於實現音頻共享的架構圖(示意圖)。
圖2為具體實施方式中Android系統電子設備向IOS系統電子設備發送音頻數據的流程圖。
圖3為具體實施方式中Android系統電子設備從IOS系統電子設備獲取音頻數據的流程圖。
具體實施方式
下面對本發明的實施方式進行進一步的具體說明。但應注意,本發明的範圍並不局限於所描述的具體技術方案。任何對所描述的具體技術方案中的技術要素進行相同或等同替換獲得的技術方案或本領域技術人員在所描述的具體技術方案的基礎上不經過創造性勞動就可以獲得的技術方案,都應當視為落入本發明的保護範圍。
以Android系統電子設備和IOS系統電子設備為例說明電子設備音頻共享方法。IOS系統電子設備的音頻硬體,包括音頻輸入硬體(例如麥克風)和音頻輸出硬體(例如聽筒)兩類。Android系統電子設備共享IOS系統電子設備的音頻硬體,需要對Android系統電子設備和IOS系統電子設備都進行必要的定製開發。
對Android系統電子設備的定製開發,主要是修改Android系統的AudioTrack及AudioRecord,使得AudioTrack能夠向設定的緩衝區寫數據,而AudioRecord能夠從設定的緩衝區讀數據(每個AudioTrack和AudioRecord都有與其對應的獨立緩衝區)。這樣,Android系統電子設備和IOS系統電子設備之間的音頻數據傳輸可以通過生產者—消費者進程方式實現。生產者—消費者進程方式指一組生產者進程和一組消費者進程共享一個初始為空、有限大小的緩衝區。只有緩衝區沒滿時,生產者才能把消息放入到緩衝區,否則必須等待;只有緩衝區不空時,消費者才能從中取出消息,否則必須等待。緩衝區為臨界資源,一次只允許一個生產者放入消息,或者一個消費者從中取出消息。
對IOS系統電子設備的定製開發,主要是開發一個應用(應用指能在IOS系統中運行的軟體或程序),該應用可以稱為音頻處理程序,來管理Android系統電子設備和IOS系統電子設備的音頻共享。音頻處理程序能夠使用IOS系統提供的音頻庫,一方面可以對從Android系統電子設備獲取到的音頻數據進行增益降噪等處理並播放出來,另一方面可以對從麥克風等音頻輸入硬體獲取的音頻數據進行增益降噪等處理,傳輸給Android系統電子設備。IOS系統提供基於音頻庫的Audio Unit(中文可以翻譯為音頻單元),音頻單元可以進行快速、模塊化的音頻處理,音頻處理程序調用不同的音頻單元即可實現相應的音頻處理操作。
在以上所述的定製開發的基礎上,音頻處理程序能夠調用基於IOS系統音頻庫的音頻單元,在Android系統電子設備和IOS系統電子設備之間通過生產者—消費者進程方式傳輸音頻數據。
當然,Android系統電子設備和IOS系統電子設備實現音頻共享,有一個重要的前提條件,就是Android系統電子設備和IOS系統電子設備相互連接並能相互傳輸數據。根據現有技術的報導,Android系統電子設備和IOS系統電子設備連接並傳輸數據,可以通過建立藍牙通路、接口(例如USB-Lighting接口)通路、網絡(例如WIFI、通信網絡等)通路等方式實現。無論採用何種通路,對於作業系統和應用而言,都相當於建立了socket連接(當兩個程序通過一個雙向的通信連接實現數據交換時,這個連接的一端稱為一個socket)。Android系統電子設備和IOS系統電子設備可以根據所處的具體環境,人工設置或者按照預先設定的規則選擇通路連接方式,基於所選的通路建立socket連接。
根據以上描述,Android系統電子設備和IOS系統電子設備用於實現音頻共享的架構圖如圖1所示(圖1為簡化的示意圖)。
建立如圖1所示的架構後,Android系統電子設備和IOS系統電子設備可以實現音頻共享。所謂音頻共享,包括兩個技術方案上相互獨立但實際中往往交替甚至同時發生、關聯度極高的過程,即Android系統電子設備向IOS系統電子設備發送音頻數據和Android系統電子設備從IOS系統電子設備獲取音頻數據兩個過程,這兩個過程可以統稱為電子設備音頻共享方法。
如之前所述,Android系統電子設備向IOS系統電子設備發送音頻數據和Android系統電子設備從IOS系統電子設備獲取音頻數據這兩個過程都可以通過生產者—消費者進程方式實現。當然,不同過程的具體步驟存在差別。
Android系統電子設備向IOS系統電子設備發送音頻數據的流程如圖2所示,包括:
S201:Android系統電子設備發送控制指令給IOS系統,Android系統向設定的緩衝區寫入音頻數據,音頻數據傳輸給IOS系統,被基於IOS系統音頻庫的音頻單元消費。
具體說,本步驟中,當Android系統電子設備需要利用IOS系統電子設備的音頻輸出硬體播放音頻時,Android系統發送控制指令給IOS系統。這裡的控制指令,應該作廣義的理解,包括一系列封裝的協議,其中有數據傳輸協議,數據傳輸協議包含了音頻數據的採樣率、聲道數、採樣深度等信息,也有指令控制協議等。
Android系統的AudioTrack向設定的緩衝區寫入相關音頻數據,這些數據通過socket傳輸給IOS系統,IOS系統的音頻處理程序調用基於IOS系統音頻庫的音頻單元消費這些數據。
S202:基於IOS系統音頻庫的音頻單元對獲得的音頻數據進行處理,通過IOS系統音頻庫提供的API,使用IOS系統電子設備的音頻輸出硬體播放。
具體說,本步驟中,基於IOS系統音頻庫的音頻單元對消費的音頻數據(即獲得的音頻數據)進行音頻處理,音頻處理程序通過IOS系統音頻庫提供的API(應用程式編程接口),使用IOS系統電子設備的音頻輸出硬體播放處理後的音頻數據。
Android系統電子設備從IOS系統電子設備獲取音頻數據的流程如圖3所示,包括:
S301:Android系統電子設備發送控制指令給IOS系統。通過IOS系統音頻庫提供的API獲得IOS系統電子設備的音頻輸入硬體的音頻數據。基於IOS系統音頻庫的音頻單元對獲得的音頻數據進行處理,寫入Android系統設定的緩衝區。
具體說,本步驟中,當Android系統電子設備需要從IOS系統電子設備獲取音頻數據時,Android系統發送控制指令給IOS系統。IOS系統的音頻處理程序通過IOS系統音頻庫提供的API獲得IOS系統電子設備的音頻輸入硬體的音頻數據。音頻處理程序調用基於IOS系統音頻庫的音頻單元對獲得的音頻數據進行音頻處理,處理後的音頻數據通過socket寫入Android系統設定的緩衝區(該緩衝區即AudioRecord的緩衝區)。
S302:Android系統消費設定的緩衝區的音頻數據。
具體說,本步驟中,Android系統的AudioRecord不斷等待並消費設定的緩衝區的音頻數據。在本步驟完成後或與本步驟同時,Android系統對AudioRecord獲取的音頻數據可以進行播放等後續處理。
本領域技術人員在以上所描述的具體技術方案的基礎上,完全可以構造出其他方案。例如,第一作業系統和第二作業系統,可以採用Android系統和IOS系統之外的其他作業系統,電子設備音頻共享方法進行相應的改變。在此不一一列舉。