2011-11-28 64 views
2

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

回答

1

试试这个...

musicPlayer = [[MPMusicPlayerController iPodMusicPlayer]; 

currentVolume = musicPlayer.volume; 
+0

这看起来不错,但当设备静音时,我仍然可以获得正音量值。看起来好像静音状态不会影响音量值。 IOS5下也可以读取静音状态吗? – mgamer

+0

尝试使用applicationMusicPlayer,而不是iPodMusicPlayer,然后检查..否则jbat100的答案看起来相当不错,对我来说。 –

+0

你是否在创建自己的音乐播放器对象或类似的东西......你能给我们一些代码吗? –

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也有关。

+0

是否有可能获得有关打开和关闭静音按钮的更新? – mgamer