+ SysTryReturnResult(NID_UI, __initialized , E_INVALID_STATE,
+ "Not yet initialized! This method should be called after initialized.");
+
+ result r = E_SUCCESS;
+ tts_state_e ttsState = TTS_STATE_READY;
+
+ int ttsError = tts_get_state(__ttsHandle, &ttsState);
+ SysTryReturnResult(NID_UI, ttsError == TTS_ERROR_NONE, E_SYSTEM, "Failed to get the current state.");
+
+ const char* pLanguage = ConvertTizenLocaleToEngineN(*__pCurrentLocale);
+ SysTryReturnResult(NID_UI, pLanguage != null, E_OUT_OF_MEMORY, "The memory is insufficient.");
+
+// if (ttsState != TTS_STATE_READY)
+// {
+// Stop();
+// }
+ Stop();
+ const char* pTextN = _StringConverter::CopyToCharArrayN(text);
+ int ttsUtteranceId = 0;
+
+ SysTryCatchLabel(NID_UI, pTextN != null, r = E_OUT_OF_MEMORY, CATCH_LANG, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+
+ ttsError = tts_add_text(__ttsHandle, pTextN, pLanguage, TTS_VOICE_TYPE_AUTO, __speed, &ttsUtteranceId);
+ SysTryCatch(NID_UI, ttsError == TTS_ERROR_NONE, r = E_OUT_OF_MEMORY, E_SYSTEM, "[E_SYSTEM] Failed to add a text.");
+ ttsError = tts_play(__ttsHandle);
+ SysTryCatch(NID_UI, ttsError == TTS_ERROR_NONE, r = E_SYSTEM, E_SYSTEM, "[%s] Failed to play.", GetEngineErrorMessage(ttsError));
+
+ OnStatusChanged(ACCESSIBILITY_SCREEN_READER_STATUS_PLAYING);
+
+ CATCH:
+ delete[] pTextN;
+
+ CATCH_LANG:
+ delete[] pLanguage;
+
+ return r;