本文共 1092 字,大约阅读时间需要 3 分钟。
方法1: 在applicationDidFinishLaunching函数里添加 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; - (void)volumeChanged:(NSNotification *)notification { float volume = [[[notification userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue]; DDLogVerbose(@"current volume = %f", volume); } 弊端:当app进入后天后,依然会监听到volume的变化 2. 对 AudioSession 添加volume变化的 listener, 可以放在startAudioSession函数里 //add a listener for Outputvolume AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume , volumeListenerCallback, self ); void volumeListenerCallback ( void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData ){ const float *volumePointer = inData; float volume = *volumePointer; NSLog(@"volumeListenerCallback %f", volume); } 3. 获取当前的volume float volume = 0.0; UInt32 dataSize = sizeof(float); OSStatus status = AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareOutputVolume, &dataSize, &volume);转载地址:http://vnosi.baihongyu.com/