2011-09-23 118 views
10

我需要檢測用戶何時按下硬件音量鍵,(App Store安全方法)我嘗試了許多沒有運氣的事情。你知道如何實現這樣的功能嗎?目前我正在註冊通知,但他們似乎並沒有得到通知。這裏是我的代碼:iPhone檢測音量鍵按下。

AudioSessionInitialize(NULL, NULL, NULL, NULL); 
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
[notificationCenter addObserver:self 
         selector:@selector(volumeChanged:) 
          name:@"AVSystemController_SystemVolumeDidChangeNotification" 
         object:nil]; 

和接收器的方法是:

-(void)volumeChanged:(NSNotification *)notification{ 
     NSLog(@"YAY, VOLUME WAS CHANGED");} 

任何提示將不勝感激。

+0

看這裏:http://stackoverflow.com/questions/772832/program-access-to-iphone-體積按鈕 – mja

回答

4

您需要啓動一個音頻會話之前通知將火:

AudioSessionInitialize(NULL, NULL, NULL, NULL); 
AudioSessionSetActive(true); 

現在,您可以訂閱通知:

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

要獲取音量:

float volume = [[[notification userInfo] 
    objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] 
    floatValue]; 

您需要存儲音量並將其與通過通知得到的以前的值進行比較要知道哪個按鈕被按下。

當用戶按下音量鍵並顯示音量疊加時,此解決方案仍然會調整系統音量。如果你想避免改變系統音量和顯示覆蓋(實質上完全重新調整音量鍵),see this answer