一種通過瀏覽器控制windows設(shè)備音量的方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種通過瀏覽器控制Windows設(shè)備音量的方 法及其系統(tǒng)。
【背景技術(shù)】
[0002] 現(xiàn)代生活中,很多利用windows操作系統(tǒng)的音頻設(shè)備都配備了耳機(jī)。用戶在聽音 樂或是看視頻過程中,有時(shí)需要插拔耳機(jī),耳機(jī)在被拔出后,系統(tǒng)自帶的聲音播放設(shè)備會(huì)繼 續(xù)播放音頻。由于系統(tǒng)自帶的聲音播放設(shè)備一般情況下音量比耳機(jī)大很多,這種情況下容 易干擾他人,或者泄漏用戶的隱私。為防止這種情況,需要用戶在拔掉耳機(jī)前記住并手動(dòng)靜 音,這對(duì)用戶體驗(yàn)和隱私保護(hù)都是不方便和易忘的操作。
【發(fā)明內(nèi)容】
[0003] 為了解決相關(guān)技術(shù)中耳機(jī)在插拔過程中系統(tǒng)無法自動(dòng)靜音的問題,本發(fā)明實(shí)施例 提供了一種通過瀏覽器控制windows設(shè)備音量的方法及其系統(tǒng)。所述技術(shù)方案如下:
[0004] 根據(jù)本發(fā)明實(shí)施例的第一方面,提供一種通過瀏覽器控制windows設(shè)備音量的方 法,該windows設(shè)備包括用于連接耳機(jī)的耳機(jī)接口,所述方法包括:
[0005] 監(jiān)聽耳機(jī)接口的信號(hào);
[0006] 判斷是否有耳機(jī)插入或拔出;
[0007] 若判斷有耳機(jī)拔出,則將windows設(shè)備所播放的音視頻文件以靜音方式繼續(xù)播 放。
[0008] 根據(jù)本發(fā)明實(shí)施例的第二方面,提供一種通過瀏覽器控制windows設(shè)備音量的系 統(tǒng),所述系統(tǒng),包括:
[0009] 監(jiān)聽模塊:用于監(jiān)聽耳機(jī)接口的信號(hào);
[0010] 判斷模塊:用于判斷是否有耳機(jī)拔出;
[0011] 自動(dòng)靜音模塊:用于,若判斷有耳機(jī)拔出,則將windows設(shè)備所播放的音視頻文件 以靜音方式繼續(xù)播放。
[0012] 本發(fā)明實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
[0013] 當(dāng)耳機(jī)從windows設(shè)備上拔出時(shí),通過上述方法和系統(tǒng),windows設(shè)備能檢測耳機(jī) 被拔出而自動(dòng)將windows設(shè)備設(shè)置成靜音狀態(tài),如此可避免耳機(jī)被拔出后windows設(shè)備通 過其擴(kuò)音器外發(fā)聲音而干擾他人,而且還能避免泄漏用戶隱私。不僅如此,當(dāng)windows設(shè)備 處于靜音狀態(tài)時(shí),其用于播放聲音的擴(kuò)音器處于非工作狀態(tài),從而避免了多余電量的消耗, 因此上述方法還具有省電節(jié)能的效果。
[0014] 應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不 能限制本發(fā)明。
【附圖說明】
[0015] 此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實(shí)施 例,并與說明書一起用于解釋本發(fā)明的原理。
[0016] 圖1是根據(jù)一示例性實(shí)施例示出的一種通過瀏覽器控制windows設(shè)備音量的方法 的流程圖;
[0017] 圖2根據(jù)另一示例性實(shí)施例示出的一種通過瀏覽器控制windows設(shè)備音量的方法 的流程圖;
[0018] 圖3根據(jù)一7K例性實(shí)施例7K出的一種通過瀏覽器控制windows設(shè)備音量的系統(tǒng)的 功能模塊圖;
[0019] 通過上述附圖,已示出本發(fā)明明確的實(shí)施例,后文中將有更詳細(xì)的描述。這些附圖 和文字描述并不是為了通過任何方式限制本發(fā)明構(gòu)思的范圍,而是通過參考特定實(shí)施例為 本領(lǐng)域技術(shù)人員說明本發(fā)明的概念。
【具體實(shí)施方式】
[0020] 這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及 附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例 中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附 權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
[0021] 圖1是根據(jù)一示例性實(shí)施例示出的一種通過瀏覽器控制windows設(shè)備音量的方法 的流程圖,該windows設(shè)備包括用于連接耳機(jī)的耳機(jī)接口,該方法可以包括如下幾個(gè)步驟:
[0022] S110,監(jiān)聽耳機(jī)接口的信號(hào)。
[0023] S120,判斷是否有耳機(jī)拔出。
[0024] S130,若判斷有耳機(jī)拔出,則將windows設(shè)備所播放的音視頻文件以靜音方式繼 續(xù)播放。
[0025] 綜上所述,當(dāng)耳機(jī)從windows設(shè)備上拔出時(shí),通過上述方法,windows設(shè)備能檢測 耳機(jī)被拔出而自動(dòng)將windows設(shè)備設(shè)置成靜音狀態(tài),如此可避免耳機(jī)被拔出后windows設(shè) 備通過其擴(kuò)音器外發(fā)聲音而干擾他人,而且還能避免泄漏用戶隱私。不僅如此,當(dāng)windows 設(shè)備處于靜音狀態(tài)時(shí),其用于播放聲音的擴(kuò)音器處于非工作狀態(tài),從而避免了多余電量的 消耗,因此上述方法還具有省電節(jié)能的效果。
[0026] 圖2是根據(jù)另一示例性實(shí)施例示出的一種通過瀏覽器控制windows設(shè)備音量的方 法的流程圖,該windows設(shè)備包括用于連接耳機(jī)的耳機(jī)接口,該方法可以包括如下幾個(gè)步 驟:
[0027] S210,監(jiān)聽耳機(jī)接口的信號(hào)。
[0028] 具體的,瀏覽器啟動(dòng)后,實(shí)現(xiàn)IMMNotificationClient,并生成 IMMDeviceEnumerator對(duì)象,通過IMMDeviceEnumerator接口的RegisterEndpointNotific ationCallback方法注冊回調(diào),在瀏覽器的IMMNotificationClient接口中獲取外接音頻設(shè) 備變動(dòng)的通知。
[0029] IMMDeviceEnumerator接口具體如下:
[0030]
[0032] IMMNotificationClient的接 口具體如下:
[0033]
[0034] S220,判斷是否有耳機(jī)拔出。
[0035]瀏覽器在IMMNotificationClient的OnDeviceStateChanged()中根據(jù)傳入的 參數(shù)pwstrDeviceld,dwNewState獲取狀態(tài)變動(dòng)的外接音頻設(shè)備的信息以及狀態(tài)。如果 dwNewState不等于DEVICE_STATE_ACTIVE,則表示外接音頻設(shè)備被拔出或禁用;
[0036]根據(jù)pstrDeviceld,使用IIMMDeviceEnumerator的GetDevice(LPWSTRpwstrld, IMMDevice**ppDevice)方法獲取對(duì)應(yīng)的外接音頻設(shè)備的IMMDevice接口,并利用 IMMDevice的OpenPropertyStore方法獲取外接音頻設(shè)備的IPropertyStore接口;
[0037] 根據(jù)IPropertyStore接口獲取外接音頻設(shè)備的屬性信息;利用這些屬性判斷外 接音頻設(shè)備是否耳機(jī)。所述屬性信息包括外接音頻設(shè)備的名稱。
[0038] 如果是耳機(jī),且dwNewState不等于DEVICE_STATE_ACTIVE,則確定耳機(jī)已被拔出。
[0039] 若dwNewState等于DEVICE_STATE_ACTIVE,且在dwNewState等于DEVICE_STATE_ ACTIVE之前其不等于DEVICE_STATE_ACTIVE,則確定耳機(jī)已被插入。
[0040] S230,若判斷有耳機(jī)拔出,則將windows設(shè)備所播放的音視頻文件以靜音方式繼 續(xù)播放。
[0041] 具體的,瀏覽器通過COMInterfacePatch的Hook,獲取IAudioRenderClient 的ReleaseBuffer(UINT32NumFramesWritten,DWORDdwFlags)接口,并對(duì)其打Patch,將 dwFlags置為AUDCLNT_BUFFERFLAGS_SILENT,以將windows設(shè)備所播放的音視頻文件以靜 音方式繼續(xù)播放。
[0042] S240,若判斷有耳機(jī)插入,則將windows設(shè)備以靜音方式播放的音視頻文件恢復(fù) 到耳機(jī)被拔出前的音量播放。
[0043] 綜上所述,當(dāng)耳機(jī)從windows設(shè)備上拔出時(shí),通過上述方法,windows設(shè)備能檢測 到耳機(jī)被拔出而自動(dòng)將windows設(shè)備設(shè)置成靜音狀態(tài),如此可避免耳機(jī)被拔出后windows 設(shè)備通過其擴(kuò)音器外發(fā)聲音而干擾他人,還能避免泄漏用戶隱私。而且windows設(shè)備能檢 測耳機(jī)被插入而自動(dòng)將windows設(shè)備恢復(fù)到耳機(jī)被拔出前的音量大小,如此用戶在插入耳 機(jī)后無需調(diào)整windows設(shè)備便能繼續(xù)通過耳機(jī)欣賞音樂,相當(dāng)于使windows設(shè)備具備了智 能記憶功能。不僅如此,當(dāng)windows設(shè)備處于靜音狀態(tài)時(shí),其用于播放聲音的擴(kuò)音器處于非 工作狀態(tài),從而避免了多余電量的消耗,因此上述方法還具有省電節(jié)能的效果。
[0044] 圖3是根據(jù)一7K例性實(shí)施例7K出的一種通過瀏覽器控制windows設(shè)備音量的系統(tǒng) 的模塊圖,該windows設(shè)備包括用于連接耳機(jī)的耳機(jī)接口,該系統(tǒng)可以包括如下幾個(gè)模塊:
[0045] 監(jiān)聽模塊10 :用于監(jiān)聽耳機(jī)接口的信號(hào);
[0046] 判斷模塊20 :用于判斷是否有耳機(jī)拔出;
[0047] 自動(dòng)靜音模塊30 :用于,若判斷有耳機(jī)拔出,則將windows設(shè)備所播放的音視頻文 件以靜音方式繼續(xù)播放。
[0048] 所述監(jiān)聽模塊10還用于:瀏覽器啟動(dòng)后,實(shí)現(xiàn)IMMNotificationClient,并生成 IMMDeviceEnumerator對(duì)象,通過IMMDeviceEnumerator接口的RegisterEndpointNotific ationCallback方法注冊回調(diào),在瀏覽器的IMMNotificationClient接口中獲取外接音頻設(shè) 備變動(dòng)的通知。
[0049] IMMDeviceEnumerator接口具體如下:
[0050]
[0052] IMMNotificationClient的接 口具體如下:
[0053]
[0055] 所述判斷模塊20,還包括:
[0056] 第一判斷模塊21,用于:瀏覽器在IMMNotificationClient的 OnDeviceStateChangedO中根據(jù)傳入的參數(shù)pwstrDeviceld,dwNewState獲取狀態(tài)變動(dòng)的 外接音頻設(shè)備的信息以及狀態(tài)。如果dwNewState不等