本文共 1559 字,大约阅读时间需要 5 分钟。
判断是否静音:
- - (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;
- }
监听静音键:
- - (BOOL)addMutedListener
- {
- OSStatus s = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,
- audioRouteChangeListenerCallback,
- self);
- return s == kAudioSessionNoError;
- }
回调函数:
- void audioRouteChangeListenerCallback (void *inUserData,
- AudioSessionPropertyID inPropertyID,
- UInt32 inPropertyValueSize,
- const void *inPropertyValue
- )
- {
- if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return;
- BOOL muted = [mediaVolume isMuted];
- // add code here
- }
设置和获取音量:
- - (float)volume
- {
- return [[MPMusicPlayerController applicationMusicPlayer] volume];
- }
-
- - (void)setVolume:(float)newVolume
- {
- [[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume];
- }
监听音量键:
- - (BOOL)addHardKeyVolumeListener
- {
- OSStatus s = AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume,
- audioVolumeChangeListenerCallback,
- self);
- return s == kAudioSessionNoError;
- }
音量键回调函数:
- void audioVolumeChangeListenerCallback (void *inUserData,
- AudioSessionPropertyID inPropertyID,
- UInt32 inPropertyValueSize,
- const void *inPropertyValue)
- {
- if (inPropertyID != kAudioSessionProperty_CurrentHardwareOutputVolume) return;
- Float32 value = *(Float32 *)inPropertyValue;
- MediaVolume *mediaVolume = (MediaVolume *)inUserData;
- // add code here
- }
转载地址:http://tnosi.baihongyu.com/