Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Playing camera sound only once for for multiple images using AVFoundation OR Simply mute/suppress sound programmatically

In reference to Question 1,Question 2,Question 3, I am having similar question on same platform.

I am capturing multiple images (5 images - Kind of Burst mode in 1.5 sec) using AVFoundation, I am able to snap 5 images successfully but it makes shutter sound each time new image is taken.

I am using captureStillImageAsynchronouslyFromConnection for still images. Image quality/clarity is my main focus, I don't want to compromise in Image quality and Image capturing speed.

My Queries are:

1) Can I play sound only once ie. for first image only and not for all 5 images.

2) Can I change the shutter sound, if yes, How?.

3) Will apple approve such apps if changes are incorporated.

I am aware about App Store policy for shutter sound as per Section 3.3.8.

User Interface, Data Collection, Local Laws and Privacy:

Section 3.3.8 : Any form of user or device data collection, or image, picture or voice capture or recording (collectively “Recordings”), and any form of data, content or information collection, processing, maintenance, uploading, syncing, storage, transmission, sharing, disclosure or use performed by, through or in connection with Your Application must comply with all applicable privacy laws and regulations as well as any related Program Requirements, including but not limited to any notice or consent requirements. In particular, a reasonably conspicuous audio, visual or other indicator must be displayed to the user as part of the Application to indicate that a Recording is taking place.

It is also fine if we can mute/totally suppress Camera shutter sound (no sound at all).

like image 761
iLearner Avatar asked Apr 08 '15 06:04

iLearner


1 Answers

I've used the method you've posted in Question 1 and it works like magic. So I highly recommend you follow the best answer's example.

Regarding your queries:

1) You can have the sound for the first picture only by combining the solution of the example wrapped in a boolean that checks if the first picture has been taken or not. For example:

if (hasTakenFirstPicture) {
    static SystemSoundID soundID = 0;
    if (soundID == 0) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"photoShutter2" ofType:@"caf"];
        NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
    }
    AudioServicesPlaySystemSound(soundID);
} else {
    hasTakenFirstPicture = YES;
}
[self.stillImageOutput captureStillImageAsynchronouslyFromConnection:
...

2) You can't change the default shutter sound.

3) The app store review guidelines makes no mention on rejecting an app for altering the shutter sound, so you're pretty much covered here. They should only ever reject your app if the app you submit does not meet any of the criteria specified on the list.

Hope this helps!

like image 126
Danny Bravo Avatar answered Sep 21 '22 10:09

Danny Bravo