Altair Jones
Altair Jones

Reputation: 914

VoiceService in iOS

I have a question about understanding event changes in iOS when VoiceOver is enabled. I'm developing some app for blind people.

Unfortunately there is not TTS support on iOS, differently from the Mac OS SDK where you can use NSSpeechSynthesizer objects.

I found VoiceService the is not public. So, in conclusione it seems that no API for speak text is available on iOS.

The question is: How can I notify the user about data processing end?

Here is a user case: User push button, the app make some calculus/process, than should return the result. In Mac this is easy you use speakString:@"Result".

But how can I tell VoiceOver to announce the result??

Excuse me if I was too contort :-)

Thank you very much...

Upvotes: 4

Views: 2063

Answers (2)

Mike
Mike

Reputation: 46

You could use this

if (UIAccessibilityIsVoiceOverRunning()) {
   UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
                                   @"Result has been computed.");
}

Upvotes: 3

artaxerxes
artaxerxes

Reputation: 71

VSSpeechSynthesizer is available for the iOS - but it is a private API and as such will likely be rejected from the app store. However you can still make apps for private consumption.

I consider it being a Private API a bug as it makes creating accessible apps for the partially sighted for instance, harder. I have filed Bug ID #: 9451650 Bug Title: VSSpeechSynthesizer is Private

You can use FliteTTS which is free and reasonably simple to integrate, and still working in iOS5+.

You could also record a generic message 'Results available' as a wav file and play that. If your message is static (or is from a short list of possible results) you do not need TTS.

iOS6 VoiceOver / Accessibility was mentioned in the WWDC2012 keynote.

See previous answers here (which I have reiterated above)

Upvotes: 2

Related Questions