欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種控制網(wǎng)絡語音通訊音頻設備的方法及裝置的制作方法

文檔序號:7621511閱讀:225來源:國知局
專利名稱:一種控制網(wǎng)絡語音通訊音頻設備的方法及裝置的制作方法
技術領域
本發(fā)明涉及音頻設備的使用方法,尤其涉及添加外部音頻設備后多個網(wǎng)絡語音通訊模塊共用外部音頻設備的方法。
背景技術
目前網(wǎng)絡通訊終端之間可以通過網(wǎng)絡語音通訊模塊進行網(wǎng)絡語音通訊,實現(xiàn)語音通訊功能的音頻設備包括終端上的系統(tǒng)默認聲卡、麥克風以及耳機或音箱。由于用戶對麥克風和耳機的體驗與傳統(tǒng)手持電話的體驗不同,為了達到與傳統(tǒng)語音通訊相似的用戶體驗,通常為網(wǎng)絡通訊終端添加與傳統(tǒng)語音通訊類似的外部音頻設備作為處理該網(wǎng)絡通信業(yè)務的專用音頻設備,例如在網(wǎng)絡語音通訊業(yè)務中使用USB Phone即USB接口的電話進行語音通訊。該USB Phone通過USB接口與終端連接。USB Phone設備具有集成錄放功能的音頻設備和鍵盤輸入的人體學輸入設備的HID(Human Interface Device,人機對話接口設備)。網(wǎng)絡語音通訊模塊與USB Phone設備連接后,網(wǎng)絡語音通訊業(yè)務通過接收HID傳送的按鍵消息,進行撥號、呼叫以及結束等操作。通過網(wǎng)絡語音通訊業(yè)務和USB Phone設備的配合使用,可使網(wǎng)絡電話在用戶體驗上達到與傳統(tǒng)電話同等的效果。
在一個終端上,通常允許同時運行多個網(wǎng)絡語音通訊模塊,由于多個網(wǎng)絡語音通訊模塊同時運行時,只允許有一個網(wǎng)絡語音通訊模塊使用并控制USBPhone設備,即同時只允許一個網(wǎng)絡語音通訊模塊獲得USB Phone設備的控制權,因此需要解決如何控制多個網(wǎng)絡語音通訊模塊使用一個USB Phone設備的問題。
目前網(wǎng)絡語音通訊模塊通過一個撥號軟件Dialer控制USB Phone設備,并接受從USB Phone上報的消息?,F(xiàn)有技術中的撥號軟件為可執(zhí)行程序,被網(wǎng)絡語音通訊模塊調用,實現(xiàn)連接和控制網(wǎng)絡語音通訊模塊和USB Phone設備。控制網(wǎng)絡語音通訊音頻設備的方法,通過可執(zhí)行程序為用戶提供一個交互界面,當某個網(wǎng)絡語音通訊模塊需要建立與USB Phone的連接時,通過該交互界面選擇需要建立連接的網(wǎng)絡語音通訊模塊。
但是,由于目前的撥號軟件需要在用戶安裝完網(wǎng)絡語音通訊模塊后,另外安裝一個可執(zhí)行程序,并且在運行時需要用戶人工切換對USB Phone的控制權,同時系統(tǒng)啟動兩個進程才可以使用USB Phone設備,因此給用戶操作過程復雜,程序不便于維護,并且使操作系統(tǒng)增加一個進程的資源開銷。

發(fā)明內容
本發(fā)明要解決的技術問題在于提供一種控制網(wǎng)絡語音通訊音頻設備的方法及裝置,能夠減少用戶的人為操作過程,提高用戶體驗,同時減少系統(tǒng)的開銷。
為解決上述技術問題,本發(fā)明提供了一種控制網(wǎng)絡語音通訊音頻設備的方法,網(wǎng)絡語音通訊軟件調用動態(tài)鏈接庫控制音頻設備,所述控制過程包括步驟1)判斷是否存在處于激活狀態(tài)的動態(tài)鏈接庫,若有則進入步驟2),若無則獲取音頻設備的控制權2)判斷是否存在處于通話狀態(tài)的動態(tài)鏈接庫,若有則結束本流程,若無則獲取音頻設備的控制權。
步驟1)之前還包括設置共享數(shù)據(jù)單元,用于記錄處于激活狀態(tài)的動態(tài)鏈接庫標識;以及處于激活狀態(tài)的動態(tài)鏈接庫是否處于通話狀態(tài)。
步驟1)中所述獲取音頻設備的控制權包括11)將共享數(shù)據(jù)單元中的處于激活狀態(tài)的動態(tài)鏈接庫標識修改為當前欲獲取控制權的動態(tài)鏈接庫標識;12)將當前處于激活狀態(tài)的動態(tài)鏈接庫標識設為處于通話狀態(tài)。
步驟2)中所述獲取音頻設備的控制權包括21)將共享數(shù)據(jù)單元中的處于激活狀態(tài)的動態(tài)鏈接庫標識修改為欲獲取控制權的動態(tài)鏈接庫標識;22)將當前處于激活狀態(tài)的動態(tài)鏈接庫標識設為處于通話狀態(tài)。
所述控制過程還包括動態(tài)鏈接庫定期訪問共享數(shù)據(jù)單元,包括以下步驟31)判斷共享數(shù)據(jù)單元中處于激活狀態(tài)的動態(tài)鏈接庫標識是否為0,若是則將其修改為訪問的動態(tài)鏈接庫標識,若否進入步驟32);32)判斷判斷共享數(shù)據(jù)單元中處于激活狀態(tài)的動態(tài)鏈接庫標識是否與訪問的動態(tài)鏈接庫相同,若相同則結束本流程,若不同則進入步驟33);33)將當前訪問的動態(tài)鏈接庫標識設為處于通話狀態(tài)。
本發(fā)明還提供了一種控制網(wǎng)絡語音通訊音頻設備的裝置,包括至少一個動態(tài)鏈接庫,供相應的網(wǎng)絡語音通訊模塊調用;共享數(shù)據(jù)單元,用于各個動態(tài)鏈接庫之間的通訊,實現(xiàn)對音頻設備的控制。
所述共享數(shù)據(jù)單元記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;以及當前所述音頻設備的通話狀態(tài);所述動態(tài)鏈接庫獲取所述共享數(shù)據(jù)單元記錄的信息,并根據(jù)該信息獲取對所述音頻設備的控制權所述共享數(shù)據(jù)單元包括計數(shù)器,用于網(wǎng)絡語音通訊模塊啟動時為相應的動態(tài)鏈接庫分配動態(tài)鏈接庫標識;第一存儲單元,用于記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;第二存儲單元,用于記錄音頻設備當前的通訊狀態(tài)。
與現(xiàn)有技術相比,本發(fā)明的有益效果是本發(fā)明所述的控制網(wǎng)絡語音通訊音頻設備的方法及裝置通過使用動態(tài)鏈接庫來代替現(xiàn)有技術中的可執(zhí)行程序,減少了系統(tǒng)資源開銷,同時通過與共享數(shù)據(jù)單元的配合使用,實現(xiàn)對外部音頻設備控制權的自動切換,從而減輕用戶負擔,便于程序維護。
另外,本發(fā)明在訪問所述共享數(shù)據(jù)單元時,進行加鎖處理,從而保證數(shù)據(jù)的一致性。
本發(fā)明通過設置訪問所述共享數(shù)據(jù)單元的周期,對所述共享數(shù)據(jù)單元記錄的信息進行更新,保證了共享數(shù)據(jù)單元記錄信息的正確性。


圖1是本發(fā)明所述的控制網(wǎng)絡語音通訊音頻設備的方法的原理圖;圖2是第二實施例中共享數(shù)據(jù)單元的結構示意圖;圖3是第二實施例中啟動網(wǎng)絡語音通訊模塊時獲取音頻設備控制權的流程圖;圖4是第二實施例中網(wǎng)絡語音通訊模塊運行時切換音頻設備控制權的流程圖;圖5是第二實施例中更新共享數(shù)據(jù)單元記錄的信息的流程圖;圖6是第二實施例中釋放音頻設備控制權的流程圖。
具體實施例方式
本發(fā)明提供的控制網(wǎng)絡語音通訊音頻設備的方法,通過網(wǎng)絡語音通訊模塊調用動態(tài)鏈接庫實現(xiàn)對所述音頻設備進行控制。由于每個動態(tài)鏈接庫都是執(zhí)行一樣的程序,彼此都不知道其它動態(tài)鏈接庫的狀態(tài),進而無法獲悉當前獲得音頻設備控制權的動態(tài)鏈接庫,以便在某個網(wǎng)絡語音通訊模塊需要與音頻設備建立連接時能夠使該網(wǎng)絡語音通訊模塊對應的動態(tài)鏈接庫及時獲取音頻設備的控制權,本發(fā)明在網(wǎng)絡語音通訊模塊中預先設置共享數(shù)據(jù)單元,并在該共享數(shù)據(jù)單元記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;以及當前所述音頻設備的通訊狀態(tài);當某個動態(tài)鏈接庫獲取音頻設備的控制權時,根據(jù)所述共享數(shù)據(jù)單元記錄的信息獲取對所述音頻設備的控制權,由于當前音頻設備的控制權發(fā)生變更,因此為了保證共享數(shù)據(jù)單元記錄的數(shù)據(jù)的正確性需要修改所述共享數(shù)據(jù)單元記錄的信息。
本發(fā)明還可以在每個動態(tài)鏈接庫中保存動態(tài)鏈接庫的激活狀態(tài)信息,所述激活狀態(tài)是指獲得音頻設備的控制權。當某個動態(tài)鏈接庫獲取音頻設備的控制權時,根據(jù)所述共享數(shù)據(jù)單元記錄的信息以及動態(tài)鏈接庫的激活狀態(tài)信息獲取對所述音頻設備的控制權。
另外,由于共享數(shù)據(jù)單元是由多個動態(tài)鏈接庫共同訪問的,因此,在訪問共享數(shù)據(jù)單元之前,必須先對共享數(shù)據(jù)單元進行加鎖處理,完成修改后作去鎖處理。以保證同時只有一個共享數(shù)據(jù)單元在訪問共享數(shù)據(jù)單元,從而保證了數(shù)據(jù)的一致性。
若某個網(wǎng)絡語音通訊模塊需要通過音頻設備通信,則通知其對應的動態(tài)鏈接庫訪問共享數(shù)據(jù)單元,該動態(tài)鏈接庫首先查看當前獲得音頻設備控制權的動態(tài)鏈接庫,本發(fā)明所述的根據(jù)所述共享數(shù)據(jù)單元記錄的信息獲取對所述音頻設備的控制權,分為以下幾種情況。
當某個網(wǎng)絡語音通訊模塊啟動時,如果當前沒有動態(tài)鏈接庫占有所述音頻設備的控制權,則直接獲取所述音頻設備的控制權,并在共享數(shù)據(jù)單元記錄當前動態(tài)鏈接庫為獲得音頻設備控制權的動態(tài)鏈接庫;如果某個網(wǎng)絡語音通訊模塊啟動時已經(jīng)有其他的網(wǎng)絡語音通訊模塊對應的動態(tài)鏈接庫獲取所述音頻設備的控制權,則退出該共享訪問區(qū)。
當某個網(wǎng)絡語音通訊模塊運行時,當前存在獲得音頻設備控制權的動態(tài)鏈接庫,但是該動態(tài)鏈接庫對應的網(wǎng)絡語音通訊模塊未處于通信狀態(tài)時,當其他網(wǎng)絡語音通訊模塊接收到呼入請求時,則處于非激活狀態(tài)的動態(tài)鏈接庫需要獲取音頻設備的控制權,并在共享數(shù)據(jù)單元記錄當前動態(tài)鏈接庫為獲得音頻設備控制權的動態(tài)鏈接庫。相反,如果當前獲得音頻設備控制權的動態(tài)鏈接庫對應的網(wǎng)絡語音通訊模塊處于通信狀態(tài),則向該訪問共享數(shù)據(jù)單元的動態(tài)鏈接庫對應的網(wǎng)絡語音通訊模塊報告,然后退出該共享數(shù)據(jù)單元。
另外,由于動態(tài)鏈接庫只能單向地訪問共享數(shù)據(jù)單元,共享數(shù)據(jù)單元不能主動向動態(tài)鏈接庫傳遞信息,而必須存在一個獲得音頻設備控制權的動態(tài)鏈接庫,因此,本發(fā)明設置訪問共享數(shù)據(jù)單元的周期,使動態(tài)鏈接庫定期訪問共享數(shù)據(jù)單元的內容,以便及時更新狀態(tài)。當?shù)竭_所述預先設置的訪問周期時,如果當前音頻設備無人占用,例如占用該音頻設備的動態(tài)鏈接庫對應的網(wǎng)絡語音通訊模塊退出了。則訪問共享數(shù)據(jù)單元的動態(tài)鏈接庫獲取當前對音頻設備的控制權,并修改共享數(shù)據(jù)單元的相應信息。如果存在獲得當前音頻設備控制權的動態(tài)鏈接庫,則需要進一步判斷該動態(tài)鏈接庫是否是正在訪問共享數(shù)據(jù)單元的動態(tài)鏈接庫,如果是,則說明狀態(tài)相符,不作處理,退出;如果否,并且該動態(tài)鏈接庫處于激活狀態(tài),則說明說明控制權已經(jīng)被其它動態(tài)鏈接庫獲取,狀態(tài)不一致,那么,需要改該動態(tài)鏈接庫的狀態(tài)。如果處于非激活狀態(tài),則狀態(tài)一致,不作處理,退出。
當動態(tài)鏈接庫對應的網(wǎng)絡語音通訊模塊退出時,需要對共享數(shù)據(jù)單元記錄信息進行更新,即如果該動態(tài)鏈接庫為當前獲得音頻設備控制權的動態(tài)鏈接庫,則釋放對音頻設備的控制權。當然,如果當前音頻設備的控制權已經(jīng)被其它動態(tài)鏈接庫獲取,或者該動態(tài)鏈接庫沒有獲得音頻設備的控制權,則不修改共享數(shù)據(jù)單元記錄的信息,直接退出。
與上述控制網(wǎng)絡語音通訊音頻設備的方法相配合,本發(fā)明還提供一種控制網(wǎng)絡語音通訊音頻設備的裝置,包括至少一個動態(tài)鏈接庫,供相應的網(wǎng)絡語音通訊模塊調用;以及共享數(shù)據(jù)單元,用于記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;以及當前所述音頻設備的通訊狀態(tài);所述動態(tài)鏈接庫獲取所述共享數(shù)據(jù)單元記錄的信息,并根據(jù)該信息獲取對所述音頻設備的控制權。所述共享數(shù)據(jù)單元包括計數(shù)器,用于為初次訪問所述共享數(shù)據(jù)單元的動態(tài)鏈接庫分配動態(tài)鏈接庫標識;第一存儲單元,用于記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;第二存儲單元,用于記錄當前所述音頻設備的通訊狀態(tài)。同樣,為了保證數(shù)據(jù)的一致性所述動態(tài)鏈接庫還用于對所述共享數(shù)據(jù)單元加鎖和去鎖。同樣,為了對共享數(shù)據(jù)單元的記錄的信息即使更新,所述動態(tài)鏈接庫還包括定時單元,用于設置訪問所述共享數(shù)據(jù)單元的周期,當?shù)竭_所述共享數(shù)據(jù)單元的周期時,對該共享數(shù)據(jù)單元進行訪問。同樣,當某個網(wǎng)絡語音通訊模塊退出時,如果其對應的動態(tài)鏈接庫為當前獲得音頻設備的控制權的動態(tài)鏈接庫,則需要將所述控制權進行釋放。
以下詳細闡述本發(fā)明的實現(xiàn)過程。
網(wǎng)絡語音通訊模塊通常另外添加音頻設備進行網(wǎng)絡通信。在網(wǎng)絡語音通訊業(yè)務中使用USB Phone即USB接口的電話進行語音通訊。該USB Phone通過USB接口與終端連接。USB Phone設備具有集成錄放功能的音頻設備和鍵盤輸入的人體學輸入設備的HID(Human Interface Device,人機對話接口設備)。網(wǎng)絡語音通訊模塊與USB Phone設備連接后,網(wǎng)絡語音通訊業(yè)務通過接收HID傳送的按鍵消息,進行撥號、呼叫以及結束等操作。通過網(wǎng)絡語音通訊業(yè)務和USB Phone設備的配合使用,可使網(wǎng)絡電話在用戶體驗上達到與傳統(tǒng)電話同等的效果。
網(wǎng)絡語音通訊模塊通過撥號軟件Dialer來控制UsbPhone設備,并接受從UsbPhone上報的消息。撥號軟件可以是一個可執(zhí)行程序,獨立存在;或者是一個動態(tài)鏈接庫,供網(wǎng)絡語音通訊模塊調用。在本實施例中,控制音頻設備的裝置包括至少一個撥號軟件Dialer,通過該撥號軟件控制USB Phone設備,并接受從USB Phone上報的消息。為了避免使用額外的可執(zhí)行程序控制不同網(wǎng)絡語音通訊模塊間的音頻設備切換,本實施例中的撥號軟件Dialer采用動態(tài)鏈接庫方式,網(wǎng)絡語音通訊模塊通過調用動態(tài)鏈接庫,建立與音頻設備的連接。如圖1所示,每個網(wǎng)絡語音通訊模塊對應一個動態(tài)鏈接庫,將該動態(tài)鏈接庫命名為Dialer.dll。每個動態(tài)鏈接庫Dialer.dll必須知道當前是自己是否具有USB Phone設備的控制權,并且,當其他網(wǎng)絡語音通訊模塊進行通信時,還需要有相應的自動控制權切換方法。以下通過五個方面進行闡述共享數(shù)據(jù)單元的規(guī)劃、Dialer的啟動設置、控制權搶奪方案、心跳處理、Dialer退出處理。以下就其實現(xiàn)過程列舉兩個具體實施例進行詳細闡述。
第一實施例在本實施例中,對于每個Dialer.dll,記錄Dialer ID變量,作為Dialer.dll的唯一標識,即本發(fā)明所述的動態(tài)鏈接庫標識。Dialer ID從l開始計數(shù)。
由于每個Dialer.dll都是執(zhí)行一樣的程序,彼此都不知道其它Dialer的狀態(tài),因此,在本實施例中設定一共享數(shù)據(jù)單元,用于不同動態(tài)鏈接庫之間的通訊。所述共享數(shù)據(jù)單元包括三個信息,分別由所述共享數(shù)據(jù)單元的計數(shù)器、第一存儲單元和第二存儲單元完成;“Dialer.dll計數(shù)器”用于給每個剛啟動的Dialer.dll分配Dialer ID,初始值為1;第一存儲單元在本實施例中存儲“當前激活的DialerID”信息,記錄目前唯一一個激活的Dialer ID,每個Dialer可以通過訪問共享數(shù)據(jù)單元的這個域來了解當前哪個Dialer處于激活狀態(tài),例如,“當前激活的Dialer ID”的初始值為0,表示USB Phone未被任何Dialer占用;“當前激活的Dialer ID”值非0時,則表示USB Phone已被某個Dialer占用;第二存儲單元存儲“當前激活的DialerID是否處于通話狀態(tài)”信息,即本發(fā)明所述的當前音頻設備的通訊狀態(tài)信息,記錄激活的Dialer的通話狀態(tài),例如,以“true”表示處于通話狀態(tài);“false”表示處于非通話狀態(tài)。
因為共享數(shù)據(jù)單元是多個Dialer共同訪問的,所以,在修改共享數(shù)據(jù)單元之前,必須先對共享數(shù)據(jù)單元進行加鎖處理,完成修改后作去鎖處理。以保證同時只有一個Dialer在訪問共享數(shù)據(jù)單元,從而保證了數(shù)據(jù)的一致性。每個Dialer的Dialer ID值通過共享數(shù)據(jù)單元的“計數(shù)器”獲取,同樣也保證了DialerID的唯一性。接下來,判斷USB Phone設備是否被其它Dialer占用。如果“當前激活Dialer ID”值為0,表示無人占用,這時,該Dialer占用USB Phone設備,將自己的Dialer ID填入“當前激活的Dialer ID”;相反,如果“當前激活的DialerID”值非0,則表示USB Phone已經(jīng)被某個Dialer占用,則對共享數(shù)據(jù)單元內容不作修改。
根據(jù)上述處理,多個Dialer啟動時,只有第一個Dialer能獲取USB Phone的控制權。
當處于獲得USB Phone的Dialer沒有通話時,用戶呼叫其它Dialer,則沒有USB Phone控制權的Dialer可以搶奪USB Phone的控制權,具體流程如下當有用戶呼入時,讀取共享數(shù)據(jù)單元“當前激活的Dialer ID”值,該值如果為0,則表示當前沒有任何Dialer占用USB Phone,進而占用USB Phone的控制權,修改共享數(shù)據(jù)單元相應數(shù)據(jù)段,之后退出。如果取出的“當前激活DialerID”值不是0,則說明其它Dialer占用了USB Phone,這時,進一步讀取“是否通話”值,如果占用的Dialer正在處于通話過程,則不能搶奪控制權,這時,應該向上層的網(wǎng)絡語音通訊模塊報告,USB Phone被其它Dialer所占用;如果占用的Dialer不處于通話過程,則進行控制權搶奪操作,占用USB Phone的控制權,修改共享數(shù)據(jù)單元相應數(shù)據(jù)段。
由于Dialer只能單向地訪問共享數(shù)據(jù)單元,共享數(shù)據(jù)單元不能主動向Dialer傳遞信息,因此在本實施例中設置訪問共享數(shù)據(jù)單元的周期,使Dialer定期訪問共享數(shù)據(jù)單元內容,以便及時更新狀態(tài)。具體為,設置一個定時器,例如Dialer間隔5秒執(zhí)行一次心跳處理,首先,取出共享數(shù)據(jù)單元中的“當前激活Dialer ID”值,如果為0,表示當前USB Phone設備無人占用,可能的原因是,占用的Dialer所在的網(wǎng)絡語音通訊模塊程序退出了。這時,按照上文所述方法占用USB Phone的控制權,修改共享數(shù)據(jù)單元相應數(shù)據(jù)段。
當Dialer所在的網(wǎng)絡語音通訊模塊退出時,必須對共享數(shù)據(jù)單元內容進行更新,當Dialer所在的網(wǎng)絡語音通訊模塊退出時,首先判斷自己是否處于為當前獲得音頻設備的動態(tài)鏈接庫,如果不是,則不必修改共享數(shù)據(jù)單元,直接退出;如果是,則進一步和共享數(shù)據(jù)單元的“當前激活Dialer ID”值進行比較,如果值不同,說明其它Dialer已經(jīng)搶奪了控制權,這時,同樣不修改共享數(shù)據(jù)單元內容,直接退出,如果比較結果兩者值相同,說明狀態(tài)一致,當前Dialer正占用著USB Phone的控制權,這時,應該釋放控制權,以便讓其它未退出的Dialer能使用USB Phone。所以,將共享數(shù)據(jù)單元中的“當前激活Dialer ID”值改為初始值0,表示當前沒有任何Dialer占用USB Phone設備。
第二實施例本實施例與第一實施例的差別在于,對于每個Dialer.dll,記錄了兩個狀態(tài)變量,一為Dialer ID變量,記錄Dialer.dll的唯一標識,即本發(fā)明所述的動態(tài)鏈接庫標識,Dialer ID從1開始計數(shù);二為Active變量,即本發(fā)明所述的動態(tài)鏈接庫的激活狀態(tài),記錄本Dialer.dll是否處于激活狀態(tài)。所謂激活狀態(tài),即獲得USB Phone的控制權,同時只能有一個動態(tài)鏈接庫處于激活狀態(tài)。
由于每個Dialer.dll都是執(zhí)行一樣的程序,彼此都不知道其它動態(tài)鏈接庫的狀態(tài),因此,在本實施例中設定一共享數(shù)據(jù)單元,用于不同動態(tài)鏈接庫之間的通訊。如圖2所示所述共享數(shù)據(jù)單元包括三個信息,分別由所述共享數(shù)據(jù)單元的計數(shù)器、第一存儲單元和第二存儲單元完成;“Dialer.dll計數(shù)器”用于給每個剛啟動的Dialer.dll分配Dialer ID,初始值為1;第一存儲單元在本實施例中存儲“Dialer.dll計數(shù)器”用于給每個剛啟動的Dialer.dll分配Dialer ID,初始值為1;“當前激活的Dialer ID”記錄目前唯一一個激活的Dialer ID,每個動態(tài)鏈接庫可以通過訪問共享數(shù)據(jù)單元的這個域來了解當前哪個動態(tài)鏈接庫處于激活狀態(tài),例如,“當前激活的Dialer ID”的初始值為0,表示USB Phone未被任何動態(tài)鏈接庫占用;“當前激活的Dialer ID”的值非0,則表示USB Phone已被某個動態(tài)鏈接庫占用;第二存儲單元存儲“當前激活的Dialer ID是否處于通話狀態(tài)”信息,記錄激活的動態(tài)鏈接庫的通話狀態(tài),即本發(fā)明所述的音頻設備當前的通訊狀態(tài),例如,以“true”表示處于通話狀態(tài);“false”表示處于非通話狀態(tài)。
如圖3所示,因為共享數(shù)據(jù)單元是多個動態(tài)鏈接庫共同訪問的,所以,每個網(wǎng)絡語音通訊模塊對應的動態(tài)鏈接庫在修改共享數(shù)據(jù)單元之前,必須先對共享數(shù)據(jù)單元進行加鎖處理(S0),完成修改后作去鎖處理(S8)。以保證同時只有一個動態(tài)鏈接庫在訪問共享數(shù)據(jù)單元,從而保證了數(shù)據(jù)的一致性。每個動態(tài)鏈接庫的Dialer ID值通過共享數(shù)據(jù)單元的“計數(shù)器”獲取(S1),同樣也保證了Dialer ID的唯一性。然后共享數(shù)據(jù)單元中的計數(shù)器值加一(S2)。接下來,判斷USB Phone設備是否被其它動態(tài)鏈接庫占用(S3)。如果“當前激活DialerID”值為0,表示無人占用,這時,該動態(tài)鏈接庫占用USB Phone設備,將自己的Dialer ID填入“當前激活Dialer ID”(S4),進一步修改是否通話為未通話狀態(tài)(S5),并修改Active變量為激活狀態(tài)(S6);相反,如果“當前激活Dialer ID”值非0,則表示USB Phone已經(jīng)被某個Dialer占用,這時,直接修改Active變量為非激活狀態(tài)(S7),對共享數(shù)據(jù)單元內容不作修改。
當處于激活狀態(tài)的Dialer沒有通話時,用戶呼叫其它Dialer,則處于非激活狀態(tài)的Dialer可以搶奪USB Phone的控制權,具體流程如圖4所示當有用戶呼入時,判斷本Dialer是否處于激活狀態(tài)(S1),如果已經(jīng)處于激活狀態(tài),則退出(S2),不必進行控制權搶奪操作。如果處于非激活狀態(tài),在修改共享數(shù)據(jù)單元之前,先對共享數(shù)據(jù)單元進行加鎖處理(S3),則讀取共享數(shù)據(jù)單元的“當前激活Dialer ID”值,判斷是否為0(S4),該值如果為0,則表示當前沒有任何Dialer占用USB Phone,進而占用USB Phone的控制權,修改共享數(shù)據(jù)單元相應數(shù)據(jù)段,即將“當前激活Dialer ID”值修改為本Dialer的Dialer ID值(S5),將“是否處于通話狀態(tài)”修改為否(S6),并把Active置為激活狀態(tài)(S7),之后退出。如果取出的“當前激活Dialer ID”值不是0,則說明其它Dialer占用了USB Phone,這時,進一步讀取“是否通話”值(S8),如果占用的Dialer正在處于通話過程,則不能搶奪控制權,這時,應該向上層的網(wǎng)絡語音通訊模塊報告,USB Phone被其它Dialer所占用(S9);如果占用的Dialer不處于通話過程,則進行控制權搶奪操作,占用USB Phone的控制權,修改共享數(shù)據(jù)單元相應數(shù)據(jù)段,即“當前激活的Dialer ID值”和“當前激活的Dialer ID是否處于通話”(S10、S11),并把Active置為激活狀態(tài)(S13),修改完畢后,將共享數(shù)據(jù)單元去鎖(S12)。
由于Dialer只能單向地訪問共享數(shù)據(jù)單元,共享數(shù)據(jù)單元不能主動向Dialer傳遞信息,因此在本實施例中設置了訪問共享數(shù)據(jù)單元的周期,使Dialer定期訪問共享數(shù)據(jù)單元內容,以便及時更新狀態(tài)。具體為,設置一個定時器,例如Dialer間隔5秒執(zhí)行一次心跳處理,具體的理流程如圖5所示在修改共享數(shù)據(jù)單元之前,必須先對共享數(shù)據(jù)單元進行加鎖處理(S0),完成修改后作去鎖處理(S9),首先,取出共享數(shù)據(jù)單元中的“當前激活DialerID”值,判斷是否為0(S1),如果為0,表示當前USB Phone設備無人占用,可能的原因是,占用的Dialer所在的網(wǎng)絡語音通訊模塊程序退出了。這時,按照上文所述方法占用USB Phone的控制權,修改共享數(shù)據(jù)單元相應數(shù)據(jù)段,將“當前激活Dialer ID”值修改為本Dialer的Dialer ID值(S2),將“是否處于通話狀態(tài)”修改為否(S3)并把Active置為激活狀態(tài)(S4)。如果“當前激活Dialer ID”值不為0,則和本Dialer ID值相比較(S5),判斷是否相同(S6),如果相同,說明狀態(tài)相符,不作處理,退出(Sl0);如果不同,說明當前激活的Dialer不是自己,進一步再判斷自己是否處于激活狀態(tài)(S7),如果是,說明控制權已經(jīng)被其它Dialer搶奪,狀態(tài)不一致,那么,就要修改Active變量為非激活狀態(tài)(S8)。如果處于非激活狀態(tài),則狀態(tài)一致,不作處理,退出(S10)。
當Dialer所在的網(wǎng)絡語音通訊模塊退出時,必須對共享數(shù)據(jù)單元內容進行更新,具體操作如圖6所示當Dialer所在的網(wǎng)絡語音通訊模塊退出時,首先判斷自己是否處于激活狀態(tài)(S1),如果不是,則不必修改共享數(shù)據(jù)單元,直接退出(S8);如果處于激活狀態(tài),在修改共享數(shù)據(jù)單元之前,必須先對共享數(shù)據(jù)單元進行加鎖處理(S2),取出共享數(shù)據(jù)單元中的“當前激活的Dialer ID值”(S3),則進一步和共享數(shù)據(jù)單元的“當前激活Dialer ID”值進行比較(S4),判斷是否相同(S5),如果值不同,說明其它Dialer已經(jīng)搶奪了控制權,這時,同樣不修改共享數(shù)據(jù)單元內容,直接退出,如果比較結果兩者值相同,說明狀態(tài)一致,當前Dialer正占用著USB Phone的控制權,這時,應該釋放控制權,以便讓其它未退出的Dialer能使用USB Phone。所以,將共享數(shù)據(jù)單元中的“當前激活Dialer ID”值改為初始值0(S6),表示當前沒有任何Dialer占用USB Phone設備,完成修改后作去鎖處理(S7)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種控制網(wǎng)絡語音通訊音頻設備的方法,網(wǎng)絡語音通訊軟件調用動態(tài)鏈接庫控制音頻設備,其特征在于所述控制過程包括步驟1)判斷是否存在處于激活狀態(tài)的動態(tài)鏈接庫,若有則進入步驟2),若無則獲取音頻設備的控制權2)判斷是否存在處于通話狀態(tài)的動態(tài)鏈接庫,若有則結束本流程,若無則獲取音頻設備的控制權。
2.根據(jù)權利要求1所述的控制網(wǎng)絡語音通訊音頻設備的方法,其特征在于,步驟1)之前還包括設置共享數(shù)據(jù)單元,用于記錄處于激活狀態(tài)的動態(tài)鏈接庫標識;以及處于激活狀態(tài)的動態(tài)鏈接庫是否處于通話狀態(tài)。
3.根據(jù)權利要求2所述的控制網(wǎng)絡語音通訊音頻設備的方法,其特征在于,步驟1)中所述獲取音頻設備的控制權包括11)將共享數(shù)據(jù)單元中的處于激活狀態(tài)的動態(tài)鏈接庫標識修改為當前欲獲取控制權的動態(tài)鏈接庫標識;12)將當前處于激活狀態(tài)的動態(tài)鏈接庫標識設為處于通話狀態(tài)。
4.根據(jù)權利要求2或3所述的控制網(wǎng)絡語音通訊音頻設備的方法,其特征在于,步驟2)中所述獲取音頻設備的控制權包括21)將共享數(shù)據(jù)單元中的處于激活狀態(tài)的動態(tài)鏈接庫標識修改為欲獲取控制權的動態(tài)鏈接庫標識;22)將當前處于激活狀態(tài)的動態(tài)鏈接庫標識設為處于通話狀態(tài)。
5.根據(jù)權利要求2所述的控制網(wǎng)絡語音通訊音頻設備的方法,其特征在于所述控制過程還包括動態(tài)鏈接庫定期訪問共享數(shù)據(jù)單元,包括以下步驟31)判斷共享數(shù)據(jù)單元中處于激活狀態(tài)的動態(tài)鏈接庫標識是否為0,若是則將其修改為訪問的動態(tài)鏈接庫標識,若否進入步驟32);32)判斷判斷共享數(shù)據(jù)單元中處于激活狀態(tài)的動態(tài)鏈接庫標識是否與訪問的動態(tài)鏈接庫相同,若相同則結束本流程,若不同則進入步驟33);33)將當前訪問的動態(tài)鏈接庫標識設為處于通話狀態(tài)。
6.根據(jù)權利要求2、3、5中任一項所述的控制網(wǎng)絡語音通訊音頻設備的方法,其特征在于,還包括在訪問所述共享數(shù)據(jù)單元時,對所述共享數(shù)據(jù)單元加鎖,以及退出所述共享數(shù)據(jù)單元時,對所述共享數(shù)據(jù)單元去鎖。
7.一種控制網(wǎng)絡語音通訊音頻設備的裝置,其特征在于,包括至少一個動態(tài)鏈接庫,供相應的網(wǎng)絡語音通訊模塊調用;共享數(shù)據(jù)單元,用于各個動態(tài)鏈接庫之間的通訊,實現(xiàn)對音頻設備的控制。
8.根據(jù)權利要求7所述的控制網(wǎng)絡語音通訊音頻設備的裝置,其特征在于,所述共享數(shù)據(jù)單元記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;以及當前所述音頻設備的通話狀態(tài);所述動態(tài)鏈接庫獲取所述共享數(shù)據(jù)單元記錄的信息,并根據(jù)該信息獲取對所述音頻設備的控制權。
9.根據(jù)權利要求8所述的控制網(wǎng)絡語音通訊音頻設備的裝置,其特征在于,所述共享數(shù)據(jù)單元包括計數(shù)器,用于網(wǎng)絡語音通訊模塊啟動時為相應的動態(tài)鏈接庫分配動態(tài)鏈接庫標識;第一存儲單元,用于記錄當前獲得音頻設備控制權的動態(tài)鏈接庫標識;第二存儲單元,用于記錄音頻設備當前的通訊狀態(tài)。
10.根據(jù)權利要求9所述的控制網(wǎng)絡語音通訊音頻設備的裝置,其特征在于,還包括定時單元,用于設置訪問所述共享數(shù)據(jù)單元的周期。
全文摘要
一種控制網(wǎng)絡語音通訊音頻設備的方法,網(wǎng)絡語音通訊軟件調用動態(tài)鏈接庫控制音頻設備,所述控制過程包括步驟1)判斷是否存在處于激活狀態(tài)的動態(tài)鏈接庫,若有則進入步驟2),若無則獲取音頻設備的控制權;2)判斷是否存在處于通話狀態(tài)的動態(tài)鏈接庫,若有則結束本流程,若無則獲取音頻設備的控制權。本發(fā)明還提供了一種控制網(wǎng)絡語音通訊音頻設備的裝置,包括至少一個動態(tài)鏈接庫,供相應的網(wǎng)絡語音通訊模塊調用;共享數(shù)據(jù)單元,用于各個動態(tài)鏈接庫之間的通訊,實現(xiàn)對音頻設備的控制。
文檔編號H04M7/00GK1909570SQ20051008835
公開日2007年2月7日 申請日期2005年8月2日 優(yōu)先權日2005年8月2日
發(fā)明者王麒 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
中西区| 保靖县| 当涂县| 新营市| 双城市| 承德市| 慈利县| 沈丘县| 清徐县| 宣城市| 台山市| 吉林省| 上饶县| 霍州市| 台南县| 彭州市| 三亚市| 永丰县| 邯郸县| 台南县| 宁国市| 清远市| 太谷县| 文登市| 武邑县| 沈阳市| 方正县| 平邑县| 平谷区| 东乡县| 长汀县| 惠安县| 溧阳市| 碌曲县| 内乡县| 黄冈市| 博乐市| 体育| 交城县| 盖州市| 井陉县|