Как заглушить звук затвора камеры iPhone? - PullRequest
14 голосов
/ 21 ноября 2010

Я могу сделать снимок с помощью iPhone программно, вызвав [UIImagePickerController takePicture:], но когда я это сделаю, iPhone воспроизводит громкую запись щелчка затвора. Когда я гуглю о том, как отключить щелчок, я нахожу совет переименовать звуковой файл, который воспроизводит iPhone. Мне кажется, что мое приложение сделает это, и оно будет отклонено из магазина приложений для доступа к системным фреймворкам. Есть ли программный способ отключить этот звук? Природа моего приложения требует, чтобы камера молчала.

Ответы [ 4 ]

5 голосов
/ 15 ноября 2011

Я предполагаю, что вы решили это с тех пор, но ваше приложение должно было не пройти проверку Appstore, поскольку оно не соответствует лицензионному соглашению iOS Dev. Смотрите ниже:

Раздел 3.3.8: любая форма сбора данных или изображений пользователя или устройства, захват или запись изображения или голоса (в совокупности «Записи»), и любая форма сбора данных, контента или информации, обработка, обслуживание, загрузка, синхронизация, хранение, передача, обмен, раскрытие или использование, выполненное, через или в связи с Вашим Приложение должно соответствовать всем применимым законам о конфиденциальности и правила, а также любые связанные с Программой требования, в том числе, но не ограничивается какими-либо требованиями к уведомлению или согласию. В частности, достаточно заметный аудио, визуальный или другой индикатор должен быть отображается пользователю как часть приложения, чтобы указать, что Запись идет.

2 голосов
/ 07 августа 2015

Для чего бы то ни было, я смог заставить это работать, используя этот код в методе snapStillImage инфраструктуры AVCapture, используя AVCaptureStillImageOutput. Он отлично работает для меня на iOS 8.3 iPhone 5. Я также подтвердил, что Apple не отклонит ваше приложение, если вы используете это:

MPVolumeView* volumeView = [[MPVolumeView alloc] init];
//find the volumeSlider
UISlider* volumeViewSlider = nil;
for (UIView *view in [volumeView subviews]){
    if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
        volumeViewSlider = (UISlider*)view;
        break;
    }
}

[volumeViewSlider setValue:0.0f animated:YES];
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];

Swift 4:

var volumeView = MPVolumeView()
//find the volumeSlider
var volumeViewSlider: UISlider? = nil
for view: UIView in volumeView.subviews {
    if (view.self.description == "MPVolumeSlider") {
        volumeViewSlider = view as? UISlider
        break
    }
}

volumeViewSlider?.setValue(0.0, animated: true)
volumeViewSlider?.sendActions(for: .touchUpInside)
1 голос
/ 21 ноября 2010

Переименование звукового файла не будет использовать «закрытый API»; это просто невозможно изнутри песочницы (если вы как-то не вырвались из песочницы).

Однако на 4.0+ вы можете использовать AVCapture для съемки. Я не уверен, что AVCaptureStillImageOutput воспроизводит звук затвора; Обходной путь должен использовать видеокадры.

Мне интересно, что вы подразумеваете под "природой моего приложения". Если вы пытаетесь сделать какую-то обработку живого изображения, тогда видеокадры - намного лучший способ пойти в первую очередь. Если вы пытаетесь делать снимки без разрешения пользователя, тогда пользователь все равно сможет отключить звук затвора. Если вы пытаетесь фотографировать без разрешения пользователя, возможно, вы нарушаете какое-то соглашение с Apple.

1 голос
/ 21 ноября 2010

Не уверен, что вы захотите это сделать ... Звук есть, чтобы кто-то знал, что делается фотография.Идея состоит в том, чтобы обеспечить неприкосновенность частной жизни и безопасность общественности, особенно детей, - то, что Япония уже требовала от своих беззаботных граждан

В Японии и Корее уже есть законы, которые требуют этот звук при съемке фотографий.

http://abcnews.go.com/Technology/story?id=6750825&page=1

выдержка:

"В Японии и Корее Сеган отметил, что в ответ на растущие сообщения о" недолговечности "правительства приняли законы, подобные одному королюпредлагает. "

...