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

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

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

前言

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

 [[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)問題

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

定位問題

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

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

NSNotificationCenter監(jiān)聽的通知“AVSystemController_SystemVolumeDidChangeNotification”居然和RemoteControlEvents有關(guān)系,是因?yàn)槎鷻C(jī)線上也有音量調(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)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • iOS實(shí)現(xiàn)垂直滑動(dòng)條效果

    iOS實(shí)現(xiàn)垂直滑動(dòng)條效果

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

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

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

    iOS底層實(shí)例解析Swift閉包及OC閉包

    這篇文章主要為大家介紹了iOS底層實(shí)例解析Swift閉包及OC閉包,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    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使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 值得收藏的iOS開發(fā)常用代碼塊

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

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

    iOS通過UISwitch控制搖一搖

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

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

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

    iOS 適配iPhone X的方法

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

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

    本文總結(jié)了2016年比較嚴(yán)重的iOS漏洞(可用于遠(yuǎn)程代碼執(zhí)行或越獄),希望能夠?qū)Υ蠹乙苿?dòng)安全方面的工作和研究帶來一些幫助。
    2016-12-12

最新評(píng)論

定日县| 丰镇市| 武冈市| 甘谷县| 泗洪县| 中西区| 仙游县| 绥阳县| 昭平县| 肥西县| 抚松县| 洛隆县| 巍山| 寻甸| 上蔡县| 安徽省| 安仁县| 德保县| 涡阳县| 菏泽市| 电白县| 怀仁县| 锦州市| 商河县| 基隆市| 陆河县| 佛冈县| 哈尔滨市| 南溪县| 策勒县| 孝义市| 孟津县| 鹰潭市| 平舆县| 涪陵区| 扶余县| 黎川县| 湖口县| 湘潭县| 饶平县| 钦州市|