Now let's implement the IoC container and text to speech for Android. Start by creating a folder for the both the Android Modules and Services, add in two files to it, TextToSpeechDroid.cs
and DroidModule.cs
.
Let's start with the text to speech service; for TextToSpeechDroid.cs
. And add the following:
public class TextToSpeechDroid : Java.Lang.Object, ITextToSpeech, Android.Speech.Tts.TextToSpeech.IOnInitListener { private Android.Speech.Tts.TextToSpeech _speaker; private string _toSpeak; public void Speak (string msg) { var ctx = Forms.Context; _toSpeak = msg; if (_speaker == null) { _speaker = new Android.Speech.Tts.TextToSpeech (ctx, this); } else { var p = new Dictionary<string,string> (); speaker.Speak (_toSpeak, QueueMode.Flush, p); } } #region TextToSpeech.IOnInitListener implementation public void OnInit (OperationResult status) { if (status.Equals (OperationResult.Success)) { var p = new Dictionary<string,string> (); _speaker.Speak (_toSpeak, QueueMode.Flush, p); } } #endregion }
This IOnInitListener
interface requires the OnInit
function to be implemented. The OnInit
function is called to signal the completion of the TextToSpeech
engine initialization. We then implement the interface's function Speak
to speak the text passed in. At the start of the function, we check to see that a new TextToSpeech
object has been initialized; if we have then speak the message.
18.188.218.184