获取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当前音量的主要内容,如果未能解决你的问题,请参考以下文章

在 c# 中获取主音量

获取音频混合器中可视化的单个 Windows 应用程序当前音量输出级别

在 iOS 中获取 AVPlayer 的音量

Chromecast 获取音量

我没有在 ios5 中获取照片库

如何获得当前音量[重复]