最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS正確監(jiān)聽手機靜音鍵和側(cè)邊音量鍵的方法示例

 更新時間:2017年11月16日 10:31:54   作者:Wellphone  
這篇文章主要給大家介紹了關(guān)于iOS正確監(jiān)聽手機側(cè)邊音量鍵的相關(guān)資料,并且給大家分享了ios監(jiān)聽靜音鍵的示例代碼,文中介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。

前言

我們的App有這樣一個Feature,用戶通過音量鍵調(diào)節(jié)到最大音量時,會彈出一個Toast,提示 用戶當前音量已經(jīng)最大了,繼續(xù)按音量上鍵可以設(shè)置為超大音量模式(通過調(diào)節(jié)音頻文件的音量)。剛開始,我們在App中是監(jiān)聽名稱為“AVSystemController_SystemVolumeDidChangeNotification”的系統(tǒng)通知來獲知用戶通過側(cè)邊音量鍵調(diào)節(jié)手機音量的事件。

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onVolumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

處理該通知的方法如下:

- (void)onVolumeChanged:(NSNotification *)notification {
 if ([[notification.userInfo objectForKey:@"AVSystemController_AudioCategoryNotificationParameter"] isEqualToString:@"Audio/Video"]) {
 if ([[notification.userInfo objectForKey:@"AVSystemController_AudioVolumeChangeReasonNotificationParameter"] isEqualToString:@"ExplicitVolumeChange"]) {
  CGFloat volume = [[notification.userInfo objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];
  if (volume != MAX_VOLUME) {
  // todo
  } else {
  // todo
  }
 }
 }
}

發(fā)現(xiàn)問題

這段代碼在我們這個App中工作的一直很好。但是最近一段時間,測試人員編譯版本,有時音量調(diào)節(jié)到最大后,沒有彈出Toast提示,而有時又會彈出來。經(jīng)調(diào)試,發(fā)現(xiàn)有時候能監(jiān)聽到“AVSystemController_SystemVolumeDidChangeNotification”系統(tǒng)通知,有時候又沒有,很飄忽不定。一時間大家都不知道怎么回事,很是頭疼。因為這個代碼在之前發(fā)布出去的正式版本中,從來沒有出現(xiàn)過這樣的問題。

定位問題

以前版本沒有,而現(xiàn)在的版本有,說明肯定是改出來的問題。只有checkout到之前的commit,逐一測試找出是哪次提交造成這樣的問題。但是這樣折騰了好久也沒能定位到是哪次提交造成的。最后,折騰了一天,我們這邊的一位美女同事Sharon最后解決了這個問題,她在stackoverflow上找到了類似的問題,發(fā)現(xiàn)是我們刪除之前通過耳機線控App的一個Feature時,把這段代碼刪掉了造成的。而這段代碼是開始監(jiān)聽遠程控制事件。

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

NSNotificationCenter監(jiān)聽的通知“AVSystemController_SystemVolumeDidChangeNotification”居然和RemoteControlEvents有關(guān)系,是因為耳機線上也有音量調(diào)節(jié)按鍵的原因???有知道的朋友們可以留言交流。

ios如何監(jiān)聽靜音鍵

判斷是否靜音:

- (BOOL)isMuted 
{ 
 CFStringRef route; 
 UInt32 routeSize = sizeof(CFStringRef); 
 
 OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route); 
 if (status == kAudioSessionNoError) 
 { 
  if (route == NULL || !CFStringGetLength(route)) 
   return TRUE; 
 } 
 
 return FALSE; 
} 

監(jiān)聽靜音鍵:

- (BOOL)addMutedListener 
{ 
 OSStatus s = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, 
             audioRouteChangeListenerCallback, 
             self); 
 return s == kAudioSessionNoError; 
} 

回調(diào)函數(shù):

void audioRouteChangeListenerCallback (void *inUserData, 
          AudioSessionPropertyID inPropertyID, 
          UInt32 inPropertyValueSize, 
          const void *inPropertyValue 
          ) 
{ 
 if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; 
 BOOL muted = [mediaVolume isMuted]; 
 // add code here 
} 

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • iOS實現(xiàn)垂直滑動條效果

    iOS實現(xiàn)垂直滑動條效果

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)垂直滑動條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • iOS實現(xiàn)滑動弧形菜單的思路與方法

    iOS實現(xiàn)滑動弧形菜單的思路與方法

    這篇文章主要給大家介紹了利用iOS實現(xiàn)滑動弧形菜單的思路與方法,實現(xiàn)后的效果非常不錯,非常適合大家在開發(fā)中使用,文末給出了封裝源碼下載的地址供大家下載學(xué)習(xí),需要的朋友可以參考,下面來一起看看吧。
    2017-05-05
  • iOS底層實例解析Swift閉包及OC閉包

    iOS底層實例解析Swift閉包及OC閉包

    這篇文章主要為大家介紹了iOS底層實例解析Swift閉包及OC閉包,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程

    這篇文章主要介紹了iOS App開發(fā)中導(dǎo)航欄的創(chuàng)建及基本屬性設(shè)置教程,即用UINavigationController來編寫navigation,示例代碼為Objective-C語言,需要的朋友可以參考下
    2016-02-02
  • Flutter開發(fā)Widgets?之?PageView使用示例

    Flutter開發(fā)Widgets?之?PageView使用示例

    這篇文章主要為大家介紹了Flutter開發(fā)Widgets?之?PageView使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 值得收藏的iOS開發(fā)常用代碼塊

    值得收藏的iOS開發(fā)常用代碼塊

    這篇文章主要為大家詳細介紹了iOS開發(fā)常用代碼塊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • iOS通過UISwitch控制搖一搖

    iOS通過UISwitch控制搖一搖

    這篇文章主要為大家詳細介紹了iOS通過UISwitch控制搖一搖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • IOS代碼筆記之網(wǎng)絡(luò)嗅探功能

    IOS代碼筆記之網(wǎng)絡(luò)嗅探功能

    這篇文章主要為大家詳細介紹了IOS網(wǎng)絡(luò)嗅探功能實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • iOS 適配iPhone X的方法

    iOS 適配iPhone X的方法

    下面小編就為大家分享一篇iOS 適配iPhone X的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 2016年iOS公開可利用漏洞總結(jié)

    2016年iOS公開可利用漏洞總結(jié)

    本文總結(jié)了2016年比較嚴重的iOS漏洞(可用于遠程代碼執(zhí)行或越獄),希望能夠?qū)Υ蠹乙苿影踩矫娴墓ぷ骱脱芯繋硪恍椭?/div> 2016-12-12

最新評論

南开区| 泸定县| 蒙自县| 甘洛县| 哈密市| 井陉县| 镶黄旗| 锡林浩特市| 远安县| 高要市| 耒阳市| 滕州市| 新郑市| 邹城市| 遂昌县| 宜都市| 定州市| 改则县| 饶阳县| 通渭县| 县级市| 漳州市| 平凉市| 通州市| 探索| 桂东县| 牡丹江市| 酒泉市| 武川县| 平顶山市| 新平| 江都市| 洪雅县| 刚察县| 锡林郭勒盟| 银川市| 舟山市| 大荔县| 阿合奇县| 光泽县| 东阿县|