Воспроизведение звука камеры только один раз для нескольких изображений с использованием AVFoundation ИЛИ Простое отключение звука/подавление звука
В отношении Вопрос 1, Вопрос 2, Вопрос 3, у меня есть аналогичный вопрос на той же платформе.
Я собираю несколько изображений (5 изображений - тип режима Burst за 1,5 секунды) с помощью AVFoundation, я могу успешно скрепить 5 изображений, но каждый раз при каждом новом изображении звук затвора становится затвором.
Я использую captureStillImageAsynchronouslyFromConnection для неподвижных изображений.
Качество изображения/ясность - это мой основной фокус, я не хочу компрометировать качество изображения и скорость захвата изображений.
Мои запросы:
1) Можно ли воспроизводить звук только один раз, т.е. только для первого изображения, а не для всех 5 изображений.
2) Могу ли я изменить звук затвора, если да, как?
3) Будет ли яблоко одобрять такие приложения, если будут внесены изменения.
Мне известно о политике магазина App Store для звука затвора в соответствии с разделом 3.3.8.
Пользовательский интерфейс, сбор данных, локальные законы и конфиденциальность:
Раздел 3.3.8: Любая форма сбора данных пользователем или устройством, а также запись или запись изображения, изображения или голоса (в совокупности "Записи" ) и любая форма данных, содержимого или сбора информации, обработки, обслуживания, синхронизация, хранение, передача, совместное использование, раскрытие или использование, выполняемые посредством или в связи с вашей Заявкой, должны соответствовать всем применимым законам и правилам конфиденциальности, а также любым связанным с ними требованиям к программе, включая, но не ограничиваясь, любые требования к уведомлению или соглашению. В частности, пользователю, как часть приложения, должен быть показан достаточно заметный звуковой, визуальный или другой индикатор, чтобы указать, что происходит запись.
Это также прекрасно, если мы можем отключить звук/полностью подавить звук затвора камеры (без звука вообще).
Любая помощь в правильном направлении будет оценена.
Ответы
Ответ 1
Я использовал метод, который вы разместили в Вопрос 1, и он работает как магия. Поэтому я настоятельно рекомендую вам следовать примеру наилучшего ответа.
Относительно ваших запросов:
1) Вы можете иметь звук для первого изображения только путем объединения решения примера, завернутого в логическое, которое проверяет, было ли выполнено первое изображение или нет. Например:
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) Вы не можете изменить звук затвора по умолчанию.
3) рекомендации по обзору магазинов приложений не упоминает об отказе от приложения для изменения звука затвора, поэтому вы в значительной степени охвачены Вот. Они должны только отклонять ваше приложение, если приложение, которое вы отправляете, не соответствует ни одному из критериев, указанных в списке.
Надеюсь, это поможет!
Ответ 2
В некоторых странах (например, Япония/Китай, я думаю) звук затвора является обязательным при съемке. Так что это может заставить ваше приложение отказаться от этих стран. Или, по крайней мере, дать вам какие-то проблемы.
В любом случае, хороший способ обхода проблемы, который может помочь вам в вашей проблеме, заключается в следующем. Обратите внимание, что качество будет немного меньше, но для проверки потребуется тестирование:
Взятие видео - еще одно решение, и снимки 5 изображений видео (например, каждые 0,3 секунды). Поэтому вместо того, чтобы снимать 5 фото, вы снимаете 1 видео и программно редактируете его.
Видео также не требуют щелчков затвора, поэтому вы можете программно (используя SystemSounds) воспроизводить любой звук, который вы хотели бы.
Пользователь не заметит разницы, но из-за того, что это видео, качество может быть меньше, а способ обработки изображения может отличаться.
Я все еще думаю, что стоит попробовать:)
Ответ 3
Мне удалось отключить/отключить звук затвора камеры, используя программный снимок экрана, используя приведенный ниже код. Подтверждено работать на iOS8.3 на iPhone 5 и принято в магазине приложений. Вызовите этот код непосредственно перед съемкой:
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];