在IOS5中获取当前音量

时间:2011-11-28 09:19:27

标签: iphone ios cocoa-touch ios5

我需要在IOS5应用程序下获得当前音量。该应用程序应该在电影院使用,所以我想通知用户他/她应该关闭音量,除非它已被拒绝。

2 个答案:

答案 0 :(得分:1)

试试这个......

musicPlayer = [[MPMusicPlayerController iPodMusicPlayer];

currentVolume = musicPlayer.volume;

答案 1 :(得分:1)

你可以像这样获得音量

-(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也是相关的。