I need to get current sound volume under my IOS5 application. The app is supposed to be used in cinemas so I want to notify the user that he/she should turn the volume down unless it is already turned down.
Asked
Active
Viewed 2,063 times
2 Answers
1
try this...
musicPlayer = [[MPMusicPlayerController iPodMusicPlayer];
currentVolume = musicPlayer.volume;

Ankit Srivastava
- 12,347
- 11
- 63
- 115
-
This looks great but when the device is muted I still get the positive volume value. Looks as though muted state didn't affect volume value. Would it be possible to read also muted state under IOS5? – mgamer Nov 28 '11 at 09:33
-
try using applicationMusicPlayer instead of iPodMusicPlayer and then check.. otherwise jbat100's answer looks pretty decent to me. – Ankit Srivastava Nov 28 '11 at 09:40
-
are you creating your own music player object or something like that... can you give us some code. – Ankit Srivastava Nov 28 '11 at 09:42
-
I am creating a software that will display content relevant to a movie being displayed in cinema. The requirement is to warn the user having unmuted device that he should mute it. – mgamer Nov 28 '11 at 09:46
-
seems like this solution is no longer valid since iOS 7.0 :( _@property(nonatomic) float volume NS_DEPRECATED_IOS(3_0, 7_0);"_ – tommys Oct 17 '13 at 15:01
1
You can get the volume like this
-(Float32)audioVolume
{
Float32 state;
UInt32 propertySize = sizeof(CFStringRef);
OSStatus n = AudioSessionGetProperty(kAudioSessionProperty_CurrentHardwareOutputVolume, &propertySize, &state);
if( n )
{
// something didn't work...
}
return state;
}
You can get system volume updates like this
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
You can work out if the phone is in silent mode if this returns an empty string (this will crash if in the simulator hence the compile time guards).
#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
Although apparently, this will not work in iOS 5. This post is related also.
-
Is it also possible to get updates about turning the mute button on and off? – mgamer Nov 28 '11 at 09:37