MCPcopy Create free account
hub / github.com/M66B/FairEmail / onTts

Method onTts

app/src/main/java/eu/faircode/email/ServiceTTS.java:143–269  ·  view source on GitHub ↗
(Intent intent)

Source from the content-addressed store, hash-verified

141 }
142
143 void onTts(Intent intent) {
144 final boolean flush = intent.getBooleanExtra(EXTRA_FLUSH, false);
145 final String text = intent.getStringExtra(EXTRA_TEXT);
146 final String language = intent.getStringExtra(EXTRA_LANGUAGE);
147 final String utteranceId = intent.getStringExtra(EXTRA_UTTERANCE_ID);
148 final long group = intent.getLongExtra(EXTRA_GROUP, 0);
149 final long message = intent.getLongExtra(EXTRA_MESSAGE, -1L);
150
151 final Locale locale = (language == null ? Locale.getDefault() : new Locale(language));
152
153 if (message > 0) {
154 String tag = "unseen." + group + "." + message;
155 NotificationManager nm = Helper.getSystemService(this, NotificationManager.class);
156 nm.cancel(tag, NotificationHelper.NOTIFICATION_TAGGED);
157
158 Helper.getSerialExecutor().submit(new Runnable() {
159 @Override
160 public void run() {
161 try {
162 String body = Helper.readText(EntityMessage.getFile(ServiceTTS.this, message));
163 String text = HtmlHelper.getFullText(ServiceTTS.this, body);
164
165 // Avoid: Not enough namespace quota ... for ...
166 text = HtmlHelper.truncate(text, getMaxTextSize() / 3);
167
168 intent.putExtra(EXTRA_TEXT, text);
169 intent.removeExtra(EXTRA_GROUP);
170 intent.removeExtra(EXTRA_MESSAGE);
171 onTts(intent);
172 } catch (Throwable ex) {
173 Log.e(ex);
174 }
175 }
176 });
177
178 return;
179 }
180
181 final Runnable speak = new RunnableEx("tts") {
182 @Override
183 public void delegate() {
184 boolean available = (instance.setLanguage(locale) >= 0);
185 EntityLog.log(ServiceTTS.this, "TTS queued" +
186 " language=" + locale +
187 " available=" + available +
188 " utterance=" + utteranceId +
189 " text=" + text);
190 int error = instance.speak(text, flush ? TextToSpeech.QUEUE_FLUSH : TextToSpeech.QUEUE_ADD, null, utteranceId);
191 if (error != TextToSpeech.SUCCESS)
192 throw new OperationCanceledException("TTS error=" + error);
193 }
194 };
195
196 final LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(ServiceTTS.this);
197
198 synchronized (lock) {
199 if (status == null) {
200 queue.add(speak);

Callers 2

onStartCommandMethod · 0.95
runMethod · 0.95

Calls 9

getSystemServiceMethod · 0.95
getSerialExecutorMethod · 0.95
iMethod · 0.95
eMethod · 0.95
runMethod · 0.95
getDefaultMethod · 0.80
cancelMethod · 0.45
getInstanceMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected