Я создал простое приложение для потоковой передачи звука, которое выглядит так:
Когда я теряю соединение аудиопотока, мое приложение накладывает этот экран поверх пользовательского интерфейса:
Я хочу сделать приложение доступным для слепых или слабовидящих людей, поэтому я хочу, чтобы закадровый голос говорил "Сигнал потерян" и "Повторное подключение", когда сигнал теряется и появляется этот оверлейный экран. Все это происходит БЕЗ КАКИХ-ЛИБО ВЗАИМОДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЯ (аналогично тому, что происходит, когда экран выходит из строя, и голосовой голос говорит: "Экран затемнен"). Было бы неплохо, если бы голосовой голос сказал: "Сигнал восстановлен" при повторном подключении тоже, но это не обязательно.
Чтобы сделать это еще более сложным, когда экран "сигнал потерян" открыт, пользователь не должен иметь возможность манипулировать какими-либо другими полями в основном пользовательском интерфейсе ниже.
Как мне этого добиться?
Заранее спасибо за вашу помощь!
Ответ 1 · рейтинг 2 · David Rönnqvist
Вы можете использовать UIAccessibilityPostNotification, чтобы сделать "объявление", которое заставит его прочитать его вслух (только когда включен VoiceOver):
UIAccessibilityPostNotification(
UIAccessibilityAnnouncementNotification,
"Signal Lost" as NSString
)
В документации для UIAccessibilityAnnouncementNotification объясняется аргумент NSString и когда его можно использовать. :
Это уведомление включает параметр, который представляет собой объект NSString, содержащий объявление. Вспомогательная технология выводит строку объявления, содержащуюся в параметре.
Используйте это уведомление, чтобы предоставить информацию о специальных возможностях о событиях, которые не обновляют пользовательский интерфейс приложения (UI) или обновляют пользовательский интерфейс только на короткое время.
Я бы порекомендовал использовать объявления экономно, но я бы сказал, что события, которые происходят без какого-либо взаимодействия с пользователем, часто - но не всегда - являются хорошим их использованием.
Ответ 2 · рейтинг 1 · Will Boland
Ну, вы можете создать mp3-запись голоса, а затем просто использовать AVAudio, чтобы воспроизвести ее, когда появится экран.
Ответ 3 · рейтинг 1 · BlackMirrorz
Если вы настроены на воспроизведение аудио, но у вас нет MP3, вы можете использовать AVFoundation:
import AVFoundation
Создайте функцию, которая синтезирует предупреждение и т. Д., Например.
/// Reads A Word Using Speech Syntheseis
///
/// - Parameters:
/// - word: String
func readWordAloud(_ word: String){
//1. Create The Word To Be Read Aloud
let wordReader = AVSpeechUtterance(string: word)
wordReader.volume = 1
//2. Pass It To The Speech Synthesizer
let speechSynthesizer = AVSpeechSynthesizer()
speechSynthesizer.speak(wordReader)
}
Вызовите метод так:
readWordAloud("No Audio Available")
А чтобы отключить взаимодействие с UIView, просто используйте:
self.view.isUserInteractionEnabled = false