本文引用了腾讯大讲堂公众号的技术分享,感谢原作者。
- (BOOL)isMuted { CFStringRef route; UInt32 routeSize = sizeof(CFStringRef); OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route); if (status == kAudioSessionNoError) { if (route == NULL || !CFStringGetLength(route)) return YES; } return NO; }
void SoundMuteNotificationCompletionProc(SystemSoundID ssID,void* clientData){ MMSoundSwitchDetector* detecotr = (__bridge MMSoundSwitchDetector*)clientData; [detecotr complete]; } - (instancetype)init { self = [super init]; if (self) { NSURL *pathURL = [[NSBundle mainBundle] URLForResource:@"mute" withExtension:@"caf"]; if (AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL, &_soundId) == kAudioServicesNoError){ AudioServicesAddSystemSoundCompletion(self.soundId, CFRunLoopGetMain(), kCFRunLoopDefaultMode, SoundMuteNotificationCompletionProc,(__bridge void *)(self)); UInt32 yes = 1; AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(_soundId),&_soundId,sizeof(yes), &yes); } else { MMErrorWithModule(LOGMODULE, @"Create Sound Error."); _soundId = 0; } } return self; } - (void)checkSoundSwitchStatus:(CheckSwitchStatusCompleteBlk)completHandler { if (self.soundId == 0) { completHandler(YES); return; } self.completeHandler = completHandler; self.beginTime = CACurrentMediaTime(); AudioServicesPlaySystemSound(self.soundId); } - (void)complete { CFTimeInterval elapsed = CACurrentMediaTime() - self.beginTime; BOOL isSwitchOn = elapsed > 0.1; if (self.completeHandler) { self.completeHandler(isSwitchOn); } }
//This property is deprecated -- use MPVolumeView for volume control instead.mpc.volume = 0; //0.0~1.0 MPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];
- (void)setSystemVolume:(float)volume { UISlider* volumeViewSlider = nil; for (UIView *view in [self.m_privateVoulmeView subviews]){ if ([view.class.description isEqualToString:@"MPVolumeSlider"]){ volumeViewSlider = (UISlider*)view; break; } } if (volumeViewSlider != nil) { [volumeViewSlider setValue:volume animated:NO]; //通过send [volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside]; } }
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
经核实认证的即时通讯技术开发者、技术博主、开源工程作者、原创精华文章作者等。
积极发起、参与各类话题的讨论等,主题、发帖内容较有价值。
本人属:猪
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.109375 second(s), 43 queries , Gzip On.