diff --git a/android/src/org/coolreader/crengine/TTSToolbarDlg.java b/android/src/org/coolreader/crengine/TTSToolbarDlg.java index 2f22c5b9e..1e9d9d3e0 100644 --- a/android/src/org/coolreader/crengine/TTSToolbarDlg.java +++ b/android/src/org/coolreader/crengine/TTSToolbarDlg.java @@ -384,38 +384,39 @@ public void onCurrentSentenceRequested(TTSControlBinder ttsbinder) { @Override public void onNextSentenceRequested(TTSControlBinder ttsbinder) { - if (isSpeaking) { - moveSelection(ReaderCommand.DCMD_SELECT_NEXT_SENTENCE, new ReaderView.MoveSelectionCallback() { - @Override - public void onNewSelection(Selection selection) { + moveSelection(ReaderCommand.DCMD_SELECT_NEXT_SENTENCE, new ReaderView.MoveSelectionCallback() { + @Override + public void onNewSelection(Selection selection) { + boolean wasSpeaking = isSpeaking; + if (isSpeaking) { ttsbinder.say(preprocessUtterance(selection.text), null); + } else { + ttsbinder.setCurrentUtterance(preprocessUtterance(selection.text)); } + } - @Override - public void onFail() { - } - }); - } else { - moveSelection(ReaderCommand.DCMD_SELECT_NEXT_SENTENCE, null); - } + @Override + public void onFail() { + } + }); } @Override public void onPreviousSentenceRequested(TTSControlBinder ttsbinder) { - if (isSpeaking) { - moveSelection(ReaderCommand.DCMD_SELECT_PREV_SENTENCE, new ReaderView.MoveSelectionCallback() { - @Override - public void onNewSelection(Selection selection) { + moveSelection(ReaderCommand.DCMD_SELECT_PREV_SENTENCE, new ReaderView.MoveSelectionCallback() { + @Override + public void onNewSelection(Selection selection) { + if (isSpeaking) { ttsbinder.say(preprocessUtterance(selection.text), null); + } else { + ttsbinder.setCurrentUtterance(preprocessUtterance(selection.text)); } + } - @Override - public void onFail() { - } - }); - } else { - moveSelection(ReaderCommand.DCMD_SELECT_PREV_SENTENCE, null); - } + @Override + public void onFail() { + } + }); } @Override diff --git a/android/src/org/coolreader/tts/TTSControlBinder.java b/android/src/org/coolreader/tts/TTSControlBinder.java index ba9c8e991..561bcb0fa 100644 --- a/android/src/org/coolreader/tts/TTSControlBinder.java +++ b/android/src/org/coolreader/tts/TTSControlBinder.java @@ -54,6 +54,10 @@ public void say(String utterance, TTSControlService.BooleanResultCallback callba mService.say(utterance, callback, new Handler()); } + public void setCurrentUtterance(String utterance) { + mService.setCurrentUtterance(utterance); + } + public void pause(TTSControlService.BooleanResultCallback callback) { mService.pause(callback, new Handler()); } diff --git a/android/src/org/coolreader/tts/TTSControlService.java b/android/src/org/coolreader/tts/TTSControlService.java index e76be3fc1..a2df590ce 100644 --- a/android/src/org/coolreader/tts/TTSControlService.java +++ b/android/src/org/coolreader/tts/TTSControlService.java @@ -1095,6 +1095,10 @@ public void work() { }); } + public void setCurrentUtterance(String utterance) { + mCurrentUtterance = utterance; + } + public void pause(BooleanResultCallback callback, Handler handler) { execTask(new Task("pause") { @Override