1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package android.speech.tts;
17 
18 import android.os.ConditionVariable;
19 import android.speech.tts.TextToSpeechService.UtteranceProgressDispatcher;
20 
21 class SilencePlaybackQueueItem extends PlaybackQueueItem {
22     private final ConditionVariable mCondVar = new ConditionVariable();
23     private final long mSilenceDurationMs;
24 
SilencePlaybackQueueItem(UtteranceProgressDispatcher dispatcher, Object callerIdentity, long silenceDurationMs)25     SilencePlaybackQueueItem(UtteranceProgressDispatcher dispatcher,
26             Object callerIdentity, long silenceDurationMs) {
27         super(dispatcher, callerIdentity);
28         mSilenceDurationMs = silenceDurationMs;
29     }
30 
31     @Override
run()32     public void run() {
33         getDispatcher().dispatchOnStart();
34         boolean wasStopped = false;
35         if (mSilenceDurationMs > 0) {
36           wasStopped = mCondVar.block(mSilenceDurationMs);
37         }
38         if (wasStopped) {
39             getDispatcher().dispatchOnStop();
40         } else {
41             getDispatcher().dispatchOnSuccess();
42         }
43 
44     }
45 
46     @Override
stop(int errorCode)47     void stop(int errorCode) {
48         mCondVar.open();
49     }
50 }
51