I have this code:
-(void)createAndPlaySoundID: (NSString*)name
{
NSString *path = [NSString stringWithFormat: @"%@/%@", [[NSBundle mainBundle] resourcePath], name];
NSURL* filePath = [NSURL fileURLWithPath: path isDirectory: NO];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
}
I call this like so:
[self createAndPlaySoundID: @"mySound.caf"];
This works great, however I have no control over the volume. I simply want the volume to be controlled by the user using the standard physical volume buttons on their iPad.
If I put this volume down to say 1, it plays, great, but then if I whack the device volume up to max its the same volume.
Any help would be appreciated, handling this, thanks.
I was also bit by a similar problem on this topic.
My problem was that there was a global setting that I was unaware of.
In the Settings app, under
General > Sounds > Ringer and Alerts
If 'Change with Buttons' is set to Off
, then sounds using AudioServicesPlaySystemSound()
will always be played at full volume (yet other sound API's such as AVAudioPlayer
will respect the volume of the device).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With