方法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);
[[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);

本文详细介绍了如何在iOS应用中监听并获取音频播放的音量变化,包括通过applicationDidFinishLaunching函数注册通知监听音量变化、使用AudioSession添加音量变化的监听器以及获取当前设备的音量值等方法。文章提供了实现音量监听的完整步骤,帮助开发者实现实时监控应用内音频播放的音量调整。
5371

被折叠的 条评论
为什么被折叠?



