18d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath/* 28d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * Copyright (C) 2011 The Android Open Source Project 38d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * 48d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); you may not 58d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * use this file except in compliance with the License. You may obtain a copy of 68d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * the License at 78d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * 88d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 98d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * 108d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * Unless required by applicable law or agreed to in writing, software 118d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 128d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 138d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * License for the specific language governing permissions and limitations under 148d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath * the License. 158d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath */ 168d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamathpackage android.speech.tts; 178d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath 188d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamathimport android.os.ConditionVariable; 19754c72ed9e8e83e5a913aa7552fc2e1b1b5277e0Narayan Kamathimport android.speech.tts.TextToSpeechService.UtteranceProgressDispatcher; 2067ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamathimport android.util.Log; 218d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath 2267ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamathclass SilencePlaybackQueueItem extends PlaybackQueueItem { 238d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath private final ConditionVariable mCondVar = new ConditionVariable(); 248d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath private final long mSilenceDurationMs; 258d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath 2667ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath SilencePlaybackQueueItem(UtteranceProgressDispatcher dispatcher, 27492b7f0d51f53164aa6eb974cd7ab6a7889af677Narayan Kamath Object callerIdentity, long silenceDurationMs) { 28492b7f0d51f53164aa6eb974cd7ab6a7889af677Narayan Kamath super(dispatcher, callerIdentity); 298d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath mSilenceDurationMs = silenceDurationMs; 308d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath } 318d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath 328d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath @Override 3367ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath public void run() { 3467ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath getDispatcher().dispatchOnStart(); 3567ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath if (mSilenceDurationMs > 0) { 3667ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath mCondVar.block(mSilenceDurationMs); 3767ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath } 3867ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath getDispatcher().dispatchOnDone(); 398d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath } 408d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath 4167ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath @Override 4267ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath void stop(boolean isError) { 4367ae6bc83cf2b30b0c61b9ebba5fed7a0038549cNarayan Kamath mCondVar.open(); 448d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath } 458d1fc2403b8277e68d7816b2bbf05464a4c7a58aNarayan Kamath} 46