OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/speech/tts_android.h" | 5 #include "chrome/browser/speech/tts_android.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
12 #include "chrome/browser/speech/tts_controller.h" | 12 #include "chrome/browser/speech/tts_controller.h" |
13 | |
14 #if defined(ANDROID_JAVA_UI) | |
Ted C
2015/11/30 19:39:05
same comment as platform_util
no sievers
2015/11/30 23:56:34
I can revert these changes. The Java implementatio
| |
13 #include "jni/TtsPlatformImpl_jni.h" | 15 #include "jni/TtsPlatformImpl_jni.h" |
16 #endif | |
14 | 17 |
15 using base::android::AttachCurrentThread; | 18 using base::android::AttachCurrentThread; |
16 | 19 |
17 // static | 20 // static |
18 TtsPlatformImpl* TtsPlatformImpl::GetInstance() { | 21 TtsPlatformImpl* TtsPlatformImpl::GetInstance() { |
19 return TtsPlatformImplAndroid::GetInstance(); | 22 return TtsPlatformImplAndroid::GetInstance(); |
20 } | 23 } |
21 | 24 |
22 TtsPlatformImplAndroid::TtsPlatformImplAndroid() | 25 TtsPlatformImplAndroid::TtsPlatformImplAndroid() |
23 : utterance_id_(0) { | 26 : utterance_id_(0) { |
27 #if defined(ANDROID_JAVA_UI) | |
24 JNIEnv* env = AttachCurrentThread(); | 28 JNIEnv* env = AttachCurrentThread(); |
25 java_ref_.Reset( | 29 java_ref_.Reset( |
26 Java_TtsPlatformImpl_create(env, | 30 Java_TtsPlatformImpl_create(env, |
27 reinterpret_cast<intptr_t>(this), | 31 reinterpret_cast<intptr_t>(this), |
28 base::android::GetApplicationContext())); | 32 base::android::GetApplicationContext())); |
33 #endif | |
29 } | 34 } |
30 | 35 |
31 TtsPlatformImplAndroid::~TtsPlatformImplAndroid() { | 36 TtsPlatformImplAndroid::~TtsPlatformImplAndroid() { |
37 #if defined(ANDROID_JAVA_UI) | |
32 JNIEnv* env = AttachCurrentThread(); | 38 JNIEnv* env = AttachCurrentThread(); |
33 Java_TtsPlatformImpl_destroy(env, java_ref_.obj()); | 39 Java_TtsPlatformImpl_destroy(env, java_ref_.obj()); |
40 #endif | |
34 } | 41 } |
35 | 42 |
36 bool TtsPlatformImplAndroid::PlatformImplAvailable() { | 43 bool TtsPlatformImplAndroid::PlatformImplAvailable() { |
37 return true; | 44 return true; |
38 } | 45 } |
39 | 46 |
40 bool TtsPlatformImplAndroid::Speak( | 47 bool TtsPlatformImplAndroid::Speak( |
41 int utterance_id, | 48 int utterance_id, |
42 const std::string& utterance, | 49 const std::string& utterance, |
43 const std::string& lang, | 50 const std::string& lang, |
44 const VoiceData& voice, | 51 const VoiceData& voice, |
45 const UtteranceContinuousParameters& params) { | 52 const UtteranceContinuousParameters& params) { |
53 #if defined(ANDROID_JAVA_UI) | |
46 JNIEnv* env = AttachCurrentThread(); | 54 JNIEnv* env = AttachCurrentThread(); |
47 jboolean success = Java_TtsPlatformImpl_speak( | 55 jboolean success = Java_TtsPlatformImpl_speak( |
48 env, java_ref_.obj(), utterance_id, | 56 env, java_ref_.obj(), utterance_id, |
49 base::android::ConvertUTF8ToJavaString(env, utterance).obj(), | 57 base::android::ConvertUTF8ToJavaString(env, utterance).obj(), |
50 base::android::ConvertUTF8ToJavaString(env, lang).obj(), params.rate, | 58 base::android::ConvertUTF8ToJavaString(env, lang).obj(), params.rate, |
51 params.pitch, params.volume); | 59 params.pitch, params.volume); |
52 if (!success) | 60 if (!success) |
53 return false; | 61 return false; |
54 | 62 |
55 utterance_ = utterance; | 63 utterance_ = utterance; |
56 utterance_id_ = utterance_id; | 64 utterance_id_ = utterance_id; |
57 return true; | 65 return true; |
66 #else | |
67 NOTIMPLEMENTED(); | |
68 return false; | |
69 #endif | |
58 } | 70 } |
59 | 71 |
60 bool TtsPlatformImplAndroid::StopSpeaking() { | 72 bool TtsPlatformImplAndroid::StopSpeaking() { |
73 #if defined(ANDROID_JAVA_UI) | |
61 JNIEnv* env = AttachCurrentThread(); | 74 JNIEnv* env = AttachCurrentThread(); |
62 Java_TtsPlatformImpl_stop(env, java_ref_.obj()); | 75 Java_TtsPlatformImpl_stop(env, java_ref_.obj()); |
63 utterance_id_ = 0; | 76 utterance_id_ = 0; |
64 utterance_.clear(); | 77 utterance_.clear(); |
65 return true; | 78 return true; |
79 #else | |
80 NOTIMPLEMENTED(); | |
81 return false; | |
82 #endif | |
66 } | 83 } |
67 | 84 |
68 void TtsPlatformImplAndroid::Pause() { | 85 void TtsPlatformImplAndroid::Pause() { |
69 StopSpeaking(); | 86 StopSpeaking(); |
70 } | 87 } |
71 | 88 |
72 void TtsPlatformImplAndroid::Resume() { | 89 void TtsPlatformImplAndroid::Resume() { |
73 } | 90 } |
74 | 91 |
75 bool TtsPlatformImplAndroid::IsSpeaking() { | 92 bool TtsPlatformImplAndroid::IsSpeaking() { |
76 return (utterance_id_ != 0); | 93 return (utterance_id_ != 0); |
77 } | 94 } |
78 | 95 |
79 void TtsPlatformImplAndroid::GetVoices( | 96 void TtsPlatformImplAndroid::GetVoices( |
80 std::vector<VoiceData>* out_voices) { | 97 std::vector<VoiceData>* out_voices) { |
98 #if defined(ANDROID_JAVA_UI) | |
81 JNIEnv* env = AttachCurrentThread(); | 99 JNIEnv* env = AttachCurrentThread(); |
82 if (!Java_TtsPlatformImpl_isInitialized(env, java_ref_.obj())) | 100 if (!Java_TtsPlatformImpl_isInitialized(env, java_ref_.obj())) |
83 return; | 101 return; |
84 | 102 |
85 int count = Java_TtsPlatformImpl_getVoiceCount(env, java_ref_.obj()); | 103 int count = Java_TtsPlatformImpl_getVoiceCount(env, java_ref_.obj()); |
86 for (int i = 0; i < count; ++i) { | 104 for (int i = 0; i < count; ++i) { |
87 out_voices->push_back(VoiceData()); | 105 out_voices->push_back(VoiceData()); |
88 VoiceData& data = out_voices->back(); | 106 VoiceData& data = out_voices->back(); |
89 data.native = true; | 107 data.native = true; |
90 data.name = base::android::ConvertJavaStringToUTF8( | 108 data.name = base::android::ConvertJavaStringToUTF8( |
91 Java_TtsPlatformImpl_getVoiceName(env, java_ref_.obj(), i)); | 109 Java_TtsPlatformImpl_getVoiceName(env, java_ref_.obj(), i)); |
92 data.lang = base::android::ConvertJavaStringToUTF8( | 110 data.lang = base::android::ConvertJavaStringToUTF8( |
93 Java_TtsPlatformImpl_getVoiceLanguage(env, java_ref_.obj(), i)); | 111 Java_TtsPlatformImpl_getVoiceLanguage(env, java_ref_.obj(), i)); |
94 data.gender = TTS_GENDER_NONE; | 112 data.gender = TTS_GENDER_NONE; |
95 data.events.insert(TTS_EVENT_START); | 113 data.events.insert(TTS_EVENT_START); |
96 data.events.insert(TTS_EVENT_END); | 114 data.events.insert(TTS_EVENT_END); |
97 data.events.insert(TTS_EVENT_ERROR); | 115 data.events.insert(TTS_EVENT_ERROR); |
98 } | 116 } |
117 #endif | |
99 } | 118 } |
100 | 119 |
101 void TtsPlatformImplAndroid::VoicesChanged(JNIEnv* env, jobject obj) { | 120 void TtsPlatformImplAndroid::VoicesChanged(JNIEnv* env, jobject obj) { |
102 TtsController::GetInstance()->VoicesChanged(); | 121 TtsController::GetInstance()->VoicesChanged(); |
103 } | 122 } |
104 | 123 |
105 void TtsPlatformImplAndroid::OnEndEvent( | 124 void TtsPlatformImplAndroid::OnEndEvent( |
106 JNIEnv* env, jobject obj, jint utterance_id) { | 125 JNIEnv* env, jobject obj, jint utterance_id) { |
107 SendFinalTtsEvent(utterance_id, TTS_EVENT_END, | 126 SendFinalTtsEvent(utterance_id, TTS_EVENT_END, |
108 static_cast<int>(utterance_.size())); | 127 static_cast<int>(utterance_.size())); |
(...skipping 25 matching lines...) Expand all Loading... | |
134 } | 153 } |
135 | 154 |
136 // static | 155 // static |
137 TtsPlatformImplAndroid* TtsPlatformImplAndroid::GetInstance() { | 156 TtsPlatformImplAndroid* TtsPlatformImplAndroid::GetInstance() { |
138 return base::Singleton< | 157 return base::Singleton< |
139 TtsPlatformImplAndroid, | 158 TtsPlatformImplAndroid, |
140 base::LeakySingletonTraits<TtsPlatformImplAndroid>>::get(); | 159 base::LeakySingletonTraits<TtsPlatformImplAndroid>>::get(); |
141 } | 160 } |
142 | 161 |
143 // static | 162 // static |
163 #if defined(ANDROID_JAVA_UI) | |
144 bool TtsPlatformImplAndroid::Register(JNIEnv* env) { | 164 bool TtsPlatformImplAndroid::Register(JNIEnv* env) { |
145 return RegisterNativesImpl(env); | 165 return RegisterNativesImpl(env); |
146 } | 166 } |
167 #endif | |
OLD | NEW |