iPhone Detect Volume Keys press.

前端 未结 1 844
离开以前
离开以前 2020-12-05 20:49

I need to detect when the user presses the hardware volume keys, (App Store safe approach) I have tried a number of things with no luck. Do you know how to implement such fu

1条回答
  •  难免孤独
    2020-12-05 21:31

    You need to start an audio session before the notification will fire:

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

    Now you can subscribe to the notification:

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

    To get the volume:

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

    You will need to store the volume and compare it to the previous value you got from a notification to know which button was pressed.

    This solution will still adjust the system volume when the user presses the volume key, and show the volume overlay. If you want to avoid changing the system volume and showing the overlay (in essence completely repurpose the volume keys), see this answer

    0 讨论(0)
提交回复
热议问题