获取设备音量
播放音频可以通过:
1 | MPMusicPlayerController *iPod = [MPMusicPlayerController systemMusicPlayer]; |
播放视频可以通过:
1 | float outputVolume = [[AVAudioSession sharedInstance] outputVolume]; |
推荐下面的方法,上面的在某些版本可能有问题,下面的方法兼容iOS6 及以上。
静音模式失效
通过设置音频会话的 category 实现:
1 | NSError *setCategoryError = nil; |
这样 App 就不会随着手机静音键打开而静音,可在手机静音下播放声音😁
监听音量改变
监听音频改变私有通知:
1 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; |
实现通过回调:
1 | - (void)volumeChanged:(NSNotification *)notification |
设置设备音量
使用 MPVolumeView
类,便利它的子 views 找到类为 MPVolumeSlider
的滑竿。
1 | MPVolumeView *volumeView = [[MPVolumeView alloc] init]; |
然后再通过设置 volumeViewSlider
的 value
即可。
1 | _volumeViewSlider.value = someVolume; |
监听静音按钮
参考Sound Switch - Sharkfood的实现。
使用很简单,判断是否为静音模式:
1 | if ([SharkfoodMuteSwitchDetector shared].isMute) { |
动态监听,通过 block 回调:
1 | [SharkfoodMuteSwitchDetector shared].silentNotify = ^(BOOL silent){ |
监听耳机拔插
监听 AVAudioSessionRouteChangeNotification
通知:
1 | [[NSNotificationCenter defaultCenter] addObserver:self |
实现回调:
1 | - (void)audioRouteChangeListenerCallback:(NSNotification*)notification |