| Index: chrome/android/java/src/org/chromium/chrome/browser/LollipopTtsPlatformImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LollipopTtsPlatformImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/LollipopTtsPlatformImpl.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c011a6afe0dbefeb1c429bde877db86f0e60720d
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/LollipopTtsPlatformImpl.java
|
| @@ -0,0 +1,60 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser;
|
| +
|
| +import android.content.Context;
|
| +import android.os.Bundle;
|
| +import android.speech.tts.TextToSpeech;
|
| +import android.speech.tts.UtteranceProgressListener;
|
| +
|
| +/**
|
| + * Subclass of TtsPlatformImpl for Lollipop to make use of newer APIs.
|
| + */
|
| +class LollipopTtsPlatformImpl extends TtsPlatformImpl {
|
| + protected LollipopTtsPlatformImpl(long nativeTtsPlatformImplAndroid, Context context) {
|
| + super(nativeTtsPlatformImplAndroid, context);
|
| + }
|
| +
|
| + /**
|
| + * Overrides TtsPlatformImpl because the API changed in Lollipop.
|
| + */
|
| + @Override
|
| + protected void addOnUtteranceProgressListener() {
|
| + mTextToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
|
| + @Override
|
| + public void onDone(final String utteranceId) {
|
| + sendEndEventOnUiThread(utteranceId);
|
| + }
|
| +
|
| + @Override
|
| + public void onError(final String utteranceId, int errorCode) {
|
| + sendErrorEventOnUiThread(utteranceId);
|
| + }
|
| +
|
| + @Override
|
| + @Deprecated
|
| + public void onError(final String utteranceId) {
|
| + }
|
| +
|
| + @Override
|
| + public void onStart(final String utteranceId) {
|
| + sendStartEventOnUiThread(utteranceId);
|
| + }
|
| + });
|
| + }
|
| +
|
| + /**
|
| + * Overrides TtsPlatformImpl because the API changed in Lollipop.
|
| + */
|
| + @Override
|
| + protected int callSpeak(String text, float volume, int utteranceId) {
|
| + Bundle params = new Bundle();
|
| + if (volume != 1.0) {
|
| + params.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME, volume);
|
| + }
|
| + return mTextToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, params,
|
| + Integer.toString(utteranceId));
|
| + }
|
| +}
|
|
|