iOS下微信語音播放之切換聽筒和揚聲器的方法解決方案
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建議在播放之前設定yes,播放結束設定NO,這個功能是開啟紅外感應
//新增監聽
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(sensorStateChange:)
name:@"UIDeviceProximityStateDidChangeNotification"
object:nil];
//處理監聽觸發事件
-(void)sensorStateChange:(NSNotificationCenter *)notification;
{
//如果此時手機靠近面部放在耳朵旁,那麼聲音將通過聽筒輸出,並將螢幕變暗(省電啊)
if ([[UIDevice currentDevice] proximityState] == YES)
{
NSLog(@"Device is close to user");
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
}
else
{
NSLog(@"Device is not close to user");
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
}
}
//初始化播放器的時候如下設定
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),
&audioRouteOverride);
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//預設情況下揚聲器播放
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:YES error:nil];
在 iOS 中,並非所有 iOS 裝置都擁有近距離感測器。這裡介紹如何呼叫 iPhone 的距離感測器。
使用近距離感測器
UIDevice 中有兩個近距離感測器的屬性:proximityMonitoringEnabled 和 proximityState。這兩個屬性都是 iOS 3.0 及以上才支援的。
proximityMonitoringEnabled 屬性
To determine if proximity monitoring is available, attempt to enable it. If the value of the proximityState property remains NO, proximity monitoring is not available.
要確定近距離感測器是否可用,可以嘗試啟用它,即 proximityMonitoringEnabled = YES,如果設定的屬性值仍然為NO,說明感測器不可用。
proximityState 屬性
感測器已啟動前提條件下,如果使用者接近 近距離感測器,此時屬性值為YES,並且螢幕已關閉(非休眠)。And vice versa。
Notification
UIDeviceProximityStateDidChangeNotification,當近距離感測器狀態改變時發生。
//新增近距離事件監聽,新增前先設定為YES,如果設定完後還是NO的讀話,說明當前裝置沒有近距離感測器
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
if ([UIDevice currentDevice].proximityMonitoringEnabled == YES) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sensorStateChange:)name:UIDeviceProximityStateDidChangeNotification object:nil];
}
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
if ([UIDevice currentDevice].proximityMonitoringEnabled == YES) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceProximityStateDidChangeNotification object:nil];
}
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
#pragma mark - 處理近距離監聽觸發事件
-(void)sensorStateChange:(NSNotificationCenter *)notification;
{
//如果此時手機靠近面部放在耳朵旁,那麼聲音將通過聽筒輸出,並將螢幕變暗(省電啊)
if ([[UIDevice currentDevice] proximityState] == YES)//黑屏
{
NSLog(@"Device is close to user");
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
}
else//沒黑螢幕
{
NSLog(@"Device is not close to user");
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
if (![MTool isPlayRecodering]) {//沒有播放了,也沒有在黑屏狀態下,就可以把距離感測器關了
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
}
}
}
相關文章
- ios微信下vue專案元件切換並自動播放音訊的解決方案iOSVue元件音訊
- Win10電腦無法自動切換耳機和揚聲器的解決方法Win10
- win10 揚聲器與耳機一鍵切換_win10揚聲器和耳機如何切換Win10
- dell win10無法切換揚聲器怎麼辦_dell win10無法切換揚聲器如何修復Win10
- 微信IOS中搖一搖無法播放聲音iOS
- win10揚聲器打不開_win10揚聲器點不開的解決方法Win10
- 電腦沒聲音但是揚聲器顯示有聲音怎麼辦?電腦沒聲音的解決辦法
- 在Ubuntu內使用聲音切換器簡單切換音訊源Ubuntu音訊
- windows10電腦打微信語音電話沒有聲音的解決方法Windows
- win10耳機和系統切換怎麼設定_win10耳機揚聲器手動切換操作方法Win10
- 電腦播放音訊聽不到聲音音訊
- [iOS]終極橫豎屏切換解決方案iOS
- iOS 視訊播放之切換清晰度iOS
- iPhone7聽筒聲音有問題?iPhone 7通話音質太差iPhone
- win10系統怎麼設定揚聲器和耳機同時響_win10設定揚聲器與耳機同時播放的方法Win10
- AntMobile tab 切換解決方案
- Win10系統下聲音出現破音爆音聲音延遲卡頓的完美解決方法Win10
- 微信聲音解鎖使用教程 微信聲音解鎖怎麼設定?
- win10話筒聲音太小怎麼辦 win10話筒聲音小如何調整Win10
- win7系統出現“未插入揚聲器或耳機”的解決方法Win7
- PPT中聲音“衝突”的解決方法
- Win10電腦聽音樂看電影時聲音卡頓斷續的解決方法Win10
- iphone通話聲音的解決方法 iphone通話聲音特別小怎樣解決?iPhone
- [貝聊科技] iOS 終極橫豎屏切換解決方案iOS
- golang聲音播放的初探Golang
- 一種OBS在macos下找不到usb話筒的解決方案Mac
- iOS AVPlayer之無縫切換播放(類似今日頭條視訊播放效果)iOS
- Win10系統播放視訊有聲音沒有畫面的解決方法Win10
- Win10系統播放影片有聲音沒有畫面的解決方法Win10
- win10點選揚聲器圖示點選沒有反應怎麼回事_win10工作列揚聲器聲音圖示點選無效解決教程Win10
- iOS開發之簡單音訊播放器iOS音訊播放器
- Win10系統下聽歌一調大聲音就出現爆音怎麼解決Win10
- win10系統下CPU風扇聲音太大的解決方法Win10
- iOS中微信語音動畫iOS動畫
- [微信音訊播放器] html5 audio 製作的微信播放器音訊播放器HTML
- Win10系統下藍芽揚聲器不可用無法檢測到藍芽揚聲器如何解決Win10藍芽
- fedora下安裝alsa庫之後聲音消失的解決辦法
- 微信小程式:音樂播放器微信小程式播放器