2011-11-28 31 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