From f85ead71b2461fe060ecc6221603b6f77679301b Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Sat, 21 Jan 2023 17:33:43 +0530 Subject: [PATCH 1/2] Fixed read aloud feature on the wiki med offline app --- .../kiwixmobile/core/main/KiwixTextToSpeech.kt | 2 +- .../kiwixmobile/core/utils/ExternalLinkOpener.kt | 14 ++++++++++++++ .../kiwixmobile/core/utils/dialog/KiwixDialog.kt | 7 +++++++ core/src/main/res/values/strings.xml | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt index 58960c94f..4ed7a9538 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt @@ -117,7 +117,7 @@ class KiwixTextToSpeech internal constructor( } else { tts.language = locale if (getFeatures(tts).contains(Engine.KEY_FEATURE_NOT_INSTALLED)) { - context.toast(R.string.tts_lang_not_supported, Toast.LENGTH_LONG) + (context as CoreMainActivity).externalLinkOpener.showTTSLanguageDownloadDialog() } else if (requestAudioFocus()) { loadURL(webView) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt index 71a8ae76b..72ee10c47 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt @@ -20,6 +20,7 @@ package org.kiwix.kiwixmobile.core.utils import android.app.Activity import android.content.Intent +import android.speech.tts.TextToSpeech import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.utils.dialog.AlertDialogShower @@ -61,4 +62,17 @@ class ExternalLinkOpener @Inject constructor( } ) } + + fun showTTSLanguageDownloadDialog() { + alertDialogShower.show( + KiwixDialog.DownloadTTSLanguage, + { + activity.startActivity( + Intent().apply { + action = TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA + } + ) + } + ) + } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt index 81ff47f0c..4aae4bc64 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt @@ -221,6 +221,13 @@ sealed class KiwixDialog( android.R.string.cancel ) + object DownloadTTSLanguage : KiwixDialog( + R.string.download_tts_language_title, + R.string.download_tts_language_message, + R.string.download, + android.R.string.cancel + ) + open class YesNoDialog( title: Int?, message: Int diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 9caab43e3..e144df807 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -323,4 +323,6 @@ Open Article Note: Notes are not deleted from your storage Delete Selected Notes? + Download this language for read aloud feature + Please click download button it will automatically download the required language. From 36c304a64bef175ae05122fc2dab7b07377a3c92 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Sat, 21 Jan 2023 18:07:05 +0530 Subject: [PATCH 2/2] Improved code and optimized imports --- .../java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt | 3 ++- .../org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt index 4ed7a9538..3a4608809 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/KiwixTextToSpeech.kt @@ -117,7 +117,8 @@ class KiwixTextToSpeech internal constructor( } else { tts.language = locale if (getFeatures(tts).contains(Engine.KEY_FEATURE_NOT_INSTALLED)) { - (context as CoreMainActivity).externalLinkOpener.showTTSLanguageDownloadDialog() + val activity = context as CoreMainActivity? + activity?.externalLinkOpener?.showTTSLanguageDownloadDialog() } else if (requestAudioFocus()) { loadURL(webView) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt index 72ee10c47..028f02c1a 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/ExternalLinkOpener.kt @@ -20,7 +20,7 @@ package org.kiwix.kiwixmobile.core.utils import android.app.Activity import android.content.Intent -import android.speech.tts.TextToSpeech +import android.speech.tts.TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.utils.dialog.AlertDialogShower @@ -69,7 +69,7 @@ class ExternalLinkOpener @Inject constructor( { activity.startActivity( Intent().apply { - action = TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA + action = ACTION_INSTALL_TTS_DATA } ) }