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