diff --git a/app/src/main/java/ai/elimu/vitabu/ui/storybook/ChapterFragment.java b/app/src/main/java/ai/elimu/vitabu/ui/storybook/ChapterFragment.java index 0606e67..23513a8 100644 --- a/app/src/main/java/ai/elimu/vitabu/ui/storybook/ChapterFragment.java +++ b/app/src/main/java/ai/elimu/vitabu/ui/storybook/ChapterFragment.java @@ -6,7 +6,6 @@ import android.os.Environment; import android.speech.tts.TextToSpeech; import android.speech.tts.UtteranceProgressListener; -import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -58,9 +57,11 @@ public class ChapterFragment extends Fragment implements AudioListener { final static String PICTURES_PATH = FILES_PATH + Environment.DIRECTORY_PICTURES + "/"; final static String MUSIC_PATH = FILES_PATH + Environment.DIRECTORY_MUSIC + "/"; + private final static long PARAGRAPH_PAUSE = 1000; + private StoryBookChapterGson storyBookChapter; - protected String chapterText = ""; + protected String[] chapterText = {}; private RecyclerView chapterRecyclerView; @@ -159,6 +160,7 @@ public void onItemClick(WordGson wordWithAudio, View view, int position) { chapterRecyclerView.setAdapter(wordViewAdapter); } + chapterText = new String[storyBookParagraphGsons.size()]; for (int paragraphIndex = 0; paragraphIndex < storyBookParagraphGsons.size(); paragraphIndex++) { Log.i(getClass().getName(), "storyBookParagraphGson.getOriginalText(): \"" + storyBookParagraphGsons.get(paragraphIndex).getOriginalText() + "\""); @@ -167,10 +169,7 @@ public void onItemClick(WordGson wordWithAudio, View view, int position) { Log.i(getClass().getName(), "wordsInOriginalText.length: " + wordsInOriginalText.length); Log.i(getClass().getName(), "Arrays.toString(wordsInOriginalText): " + Arrays.toString(wordsInOriginalText)); - if (!TextUtils.isEmpty(chapterText)) { - chapterText += "\n\n"; - } - chapterText += originalText; + chapterText[paragraphIndex] = originalText; List wordAudios = storyBookParagraphGsons.get(paragraphIndex).getWords(); Log.i(getClass().getName(), "words: " + wordAudios); @@ -189,7 +188,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat super.onViewCreated(view, savedInstanceState); // Add button for initializing Text-to-Speech (TTS) - final String finalChapterText = chapterText; + final String[] finalChapterText = chapterText; FloatingActionButton fab = view.findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override @@ -200,7 +199,7 @@ public void onClick(View view) { }); } - public void playAudio(final String chapterText, final AudioListener audioListener) { + public void playAudio(final String[] chapterText, final AudioListener audioListener) { List storyBookParagraphs = storyBookChapter.getStoryBookParagraphs(); StoryBookParagraphGson storyBookParagraphGson = storyBookParagraphs.get(0); String transcription = storyBookParagraphGson.getOriginalText(); @@ -213,8 +212,11 @@ public void playAudio(final String chapterText, final AudioListener audioListene // Fall back to TTS tts.setOnUtteranceProgressListener(getUtteranceProgressListener(audioListener)); - Log.i(getClass().getName(), "chapterText: \"" + chapterText + "\""); - tts.speak(chapterText.replaceAll("[-*]", ""), TextToSpeech.QUEUE_FLUSH, null, "0"); + Log.i(getClass().getName(), "chapterText: \"" + Arrays.toString(chapterText) + "\""); + for (String paragraph : chapterText) { + tts.speak(paragraph.replaceAll("[-*]", ""), TextToSpeech.QUEUE_ADD, null, "0"); + tts.playSilentUtterance(PARAGRAPH_PAUSE, TextToSpeech.QUEUE_ADD, null); + } } } diff --git a/app/src/main/java/ai/elimu/vitabu/ui/storybook/CoverFragment.java b/app/src/main/java/ai/elimu/vitabu/ui/storybook/CoverFragment.java index b10e76e..4287608 100644 --- a/app/src/main/java/ai/elimu/vitabu/ui/storybook/CoverFragment.java +++ b/app/src/main/java/ai/elimu/vitabu/ui/storybook/CoverFragment.java @@ -30,7 +30,7 @@ public class CoverFragment extends ChapterFragment { protected TextView titleTextView; private TextView descriptionTextView; - private String description; + private final String[] description = new String[1]; public static CoverFragment newInstance(ReadingLevel readingLevel, String description) { CoverFragment fragment = new CoverFragment(); @@ -54,20 +54,22 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, int[] titleFontSize = getResources().getIntArray(R.array.cover_title_font_size); int[] descriptionFontSize = getResources().getIntArray(R.array.chapter_text_font_size); - chapterText = setWordSpacing(chapterText); + for (int i=0; i { - titleTextView.setText(chapterText); - descriptionTextView.setText(description); + titleTextView.setText(TextUtils.join("", chapterText)); + descriptionTextView.setText(description[0]); }); - audioText = chapterText; + audioText = TextUtils.join("", chapterText); audioTextView = titleTextView; } };