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 */
16package android.speech.tts;
17
18import android.os.ConditionVariable;
19import android.speech.tts.TextToSpeechService.UtteranceProgressDispatcher;
20
21class SilencePlaybackQueueItem extends PlaybackQueueItem {
22    private final ConditionVariable mCondVar = new ConditionVariable();
23    private final long mSilenceDurationMs;
24
25    SilencePlaybackQueueItem(UtteranceProgressDispatcher dispatcher,
26            Object callerIdentity, long silenceDurationMs) {
27        super(dispatcher, callerIdentity);
28        mSilenceDurationMs = silenceDurationMs;
29    }
30
31    @Override
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
47    void stop(int errorCode) {
48        mCondVar.open();
49    }
50}
51