iOS 控制系統的音量改變

2021-07-11 14:16:26 字數 2289 閱讀 9062

請注意:

修改系統音量無法在模擬器上看到效果,必須使用真機除錯才能看到效果!

使用前請導入庫 #import

第一:通過 mpvolumesettings 來控制系統的聲音

類裡面提供了三個方法控制聲音

mp_extern __tvos_prohibited void mpvolumesettingsalertshow();

mp_extern __tvos_prohibited void mpvolumesettingsalerthide();

mp_extern __tvos_prohibited bool mpvolumesettingsalertisvisible();

mpvolumesettingsalertshow

第二:通過mpvolumeview

這個方法是蘋果官方推薦的方法。mpvolumeview是media player framework中的乙個ui元件,直接包含了對系統音量和airplay裝置的音訊映象路由的控制功能。mpvolumeview的使用很簡單,只需要將其加入到乙個父檢視中,給予父檢視合適的大小,再建立mpvolumeview示例,將其加入到父檢視中即可

但是他的缺點也是很明顯的:

1>mpvolumeview的可定製化是很低的,裡面提供了很少的幾個方法,並且幾乎都是用來定製介面

解決方法:

但是mpvolumeview的子檢視中包含乙個

mpvolumeslider的subview用來控制音量。這個mpvolumeslider是乙個私有類,我們無法手動建立此類,但這個類是uislider的子類。於是我們便可以將這個控制項給提取出來,便可以間接的控制系統音量,可以遍歷它的子檢視找到

mpvolumeslider

uislider * volumeviewslider = nil;

mpvolumeview *volumeview = [[mpvolumeview alloc] initwithframe:cgrectmake(10, 50, 200, 4)];

for (uiview* newview in volumeview.subviews)

}我們只要改變得到的volumeviewslider

的value 就可以間接的控制系統的音量

如下:/*

*獲取系統音量滑塊

*/+(uislider*)getsystemvolumslider}}

return volumeviewslider;}/*

*獲取系統音量大小

*/+(cgfloat)getsystemvolumvalue

/**設定系統音量大小

*/+(void)setsysvolumwith:(double)value

更多的需求:隱藏系統的音量提示框

通過上面的方法獲取到控制音量的滑塊之後,當我們改變滑塊的value之後,系統的音量提示框會展示出來,

實現:上面的 獲取 系統音量滑塊 的時候,並沒有將滑塊假如到我們的檢視中,如果將其假如到我們的檢視之中後,就會發現系統的音量提示框便不會展示,

可以知道:

音量滑塊 (volumeviewslider

)在檢視層級中,系統的音量提示框便不會展示,

音量滑塊 (volumeviewslider

)不在檢視層級中,系統的音量提示框便會展示,

這樣就好辦了,將音量滑塊 (volumeviewslider

)的座標調整到最低層級,或者將其座標設定為負值如(-1000,-1000,100,4)

但是有一點要注意,不能將其 hidden 設定為yes ,如果設定為yes ,就會檢測到 音量滑塊 (volumeviewslider

)並沒有在檢視層級中,系統的音量提示框還會展示

監控系統音量

請參考另一篇文章

iOS控制系統音量的大小

看到很多朋友在問能不能修改系統的音量,所以我也去找了一下。發現,sdk中確實有設定system volume的方法,是乙個private class,官方不允許使用,所以就算你用了,蘋果的審核也不會通過,因為標明了,那個是私有的類!還有人提到mpvolumeview,這個可以,但是這個的實現,是在螢...

C 控制系統音量

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...

windows api 控制系統音量

以下 針對window10支援,其他版本有待測試。當然如果通過系統鍵盤鉤子獲取vk volume down和vk volume up標識也是可以的,直接拋給windows系統自己去處理。另外需要注意筆記本鍵盤和外設hid鍵盤處理也是不一樣的。systemvolumn.h pragma once if...