获取IOS5当前音量
Posted
技术标签:
【中文标题】获取IOS5当前音量【英文标题】:Get current sound volume in IOS5 【发布时间】:2011-11-28 09:19:26 【问题描述】:我需要在我的 ios5 应用程序下获取当前音量。该应用程序应该在电影院中使用,所以我想通知用户他/她应该调低音量,除非它已经调低了。
【问题讨论】:
【参考方案1】:试试这个...
musicPlayer = [[MPMusicPlayerController iPodMusicPlayer];
currentVolume = musicPlayer.volume;
【讨论】:
这看起来不错,但是当设备静音时,我仍然得到正的音量值。看起来静音状态并没有影响音量值。 IOS5下是否也可以读取静音状态? 尝试使用 applicationMusicPlayer 而不是 iPodMusicPlayer 然后检查.. 否则 jbat100 的答案对我来说看起来相当不错。 你是在创建自己的音乐播放器对象还是类似的东西...你能给我们一些代码吗? 我正在创建一个软件,该软件将显示与正在电影院放映的电影相关的内容。要求是警告具有未静音设备的用户,他应该将其静音。 似乎这个解决方案自 iOS 7.0 起不再有效:( @property(nonatomic) float volume NS_DEPRECATED_IOS(3_0, 7_0);"【参考方案2】:你可以这样获取音量
-(Float32)audioVolume
Float32 state;
UInt32 propertySize = sizeof(CFStringRef);
OSStatus n = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareOutputVolume, &propertySize, &state);
if( n )
// something didn't work...
return state;
您可以像这样获取系统卷更新
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
如果这返回一个空字符串,您可以判断手机是否处于静音模式(如果在模拟器中,这将崩溃,因此编译时间保护)。
#ifndef TARGET_IPHONE_SIMULATOR
-(NSString*)audioRoute
CFStringRef state;
UInt32 propertySize = sizeof(CFStringRef);
OSStatus n = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state);
if( n )
// something didn't work...
NSString *result = (NSString*)state;
[result autorelease];
return result;
#endif
虽然apparently,但这在iOS 5中不起作用。This post也是相关的。
【讨论】:
是否还可以获得有关打开和关闭静音按钮的更新?以上是关于获取IOS5当前音量的主要内容,如果未能解决你的问题,请参考以下文章