iOS 声音按键的监听

一、 添加两个框架 :MediaPlayer.framework和AudioToolbox.framework

 

  1. 添加两个头文件

#import <MediaPlayer/MediaPlayer.h>

#import <AudioToolbox/AudioToolbox.h>

 

 

  1. 添加通知

一般在程序刚刚启动的时候添加:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

 

 

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

}

实现监听的方法:

- (void) volumeChanged:(NSNotification *) notification

{

    

    // 获取当前系统音量的值范围是0.0-1.0,是一个浮点型

    float volume =

    [[[notification userInfo]

      objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]

     floatValue];

    

    

    NSLog(@"----音量:%f-------",volume);

    if (!self.isMuted && volume < self.volume) {

        [[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0];

    } else if (volume > self.volume){

        [[MPMusicPlayerController applicationMusicPlayer] setVolume:volume];

    }

    self.volume = volume;

    

    

 

}

 

// 判断是否静音(一般定义一个全局变量,在其getter方法里实现)

 

- (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;

 

}

 

注意记得销毁通知

- (void) dealloc

{

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

 

}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。