// Copyright (c) 2013 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. #ifndef CHROME_BROWSER_SPEECH_TTS_ANDROID_H_ #define CHROME_BROWSER_SPEECH_TTS_ANDROID_H_ #include "base/android/jni_android.h" #include "base/android/scoped_java_ref.h" #include "base/macros.h" #include "chrome/browser/speech/tts_platform.h" #include "chrome/common/features.h" class TtsPlatformImplAndroid : public TtsPlatformImpl { public: // TtsPlatformImpl implementation. bool PlatformImplAvailable() override; bool Speak(int utterance_id, const std::string& utterance, const std::string& lang, const VoiceData& voice, const UtteranceContinuousParameters& params) override; bool StopSpeaking() override; void Pause() override; void Resume() override; bool IsSpeaking() override; void GetVoices(std::vector* out_voices) override; // Methods called from Java via JNI. void VoicesChanged(JNIEnv* env, const base::android::JavaParamRef& obj); void OnEndEvent(JNIEnv* env, const base::android::JavaParamRef& obj, jint utterance_id); void OnErrorEvent(JNIEnv* env, const base::android::JavaParamRef& obj, jint utterance_id); void OnStartEvent(JNIEnv* env, const base::android::JavaParamRef& obj, jint utterance_id); // Static functions. static TtsPlatformImplAndroid* GetInstance(); #if BUILDFLAG(ANDROID_JAVA_UI) static bool Register(JNIEnv* env); #endif private: friend struct base::DefaultSingletonTraits; TtsPlatformImplAndroid(); ~TtsPlatformImplAndroid() override; void SendFinalTtsEvent( int utterance_id, TtsEventType event_type, int char_index); base::android::ScopedJavaGlobalRef java_ref_; int utterance_id_; std::string utterance_; DISALLOW_COPY_AND_ASSIGN(TtsPlatformImplAndroid); }; #endif // CHROME_BROWSER_SPEECH_TTS_ANDROID_H_