ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Revision:
49:b9eb462f36a9
Parent:
48:c7ee67edcf1d
Child:
50:9ecaa144d1f3
--- a/dcs-sdk-java-master/app/src/main/java/com/baidu/duer/dcs/devicemodule/audioplayer/report/AudioPlayerProgressReporter.java	Tue Jul 18 16:56:22 2017 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2017 Baidu, Inc. All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.baidu.duer.dcs.devicemodule.audioplayer.report;
-
-import com.baidu.duer.dcs.devicemodule.audioplayer.message.PlayPayload;
-
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 当服务器返回Play指令有progressReportDelayInMilliseconds,
- * <p>
- * ProgressReportDelayElapsed和ProgressReportIntervalElapsed事件的上报
- * <p>
- * Created by guxiuzhong@baidu.com on 2017/5/22.
- */
-public class AudioPlayerProgressReporter {
-    private final ScheduledExecutorService eventScheduler = Executors.newScheduledThreadPool(1);
-    private ScheduledFuture<?> progressReportDelayFuture;
-    private ScheduledFuture<?> progressReportIntervalFuture;
-    private final Runnable progressReportDelayRunnable;
-    private final Runnable progressReportIntervalRunnable;
-    private final AudioPlayerTimer audioPlayerTimer;
-    private long progressReportDelay;
-    private long progressReportInterval;
-    private boolean isSetup;
-
-    public AudioPlayerProgressReporter(Runnable progressReportDelayRunnable,
-                                       Runnable progressReportIntervalRunnable,
-                                       AudioPlayerTimer audioPlayerTimer) {
-        if (progressReportDelayRunnable == null
-                || progressReportIntervalRunnable == null
-                || audioPlayerTimer == null) {
-            throw new IllegalArgumentException("All arguments must be provided.");
-        }
-        this.progressReportDelayRunnable = progressReportDelayRunnable;
-        this.progressReportIntervalRunnable = progressReportIntervalRunnable;
-        this.audioPlayerTimer = audioPlayerTimer;
-        this.isSetup = false;
-    }
-
-    public synchronized void setup(PlayPayload.ProgressReport progressReport) {
-        if (progressReport == null) {
-            String errorMessage = "ProgressReport must not be null.";
-            throw new IllegalArgumentException(errorMessage);
-        }
-        if (isSetup) {
-            String errorMessage = "AudioPlayerProgressReporter has already been setup. "
-                    + "Please disable it before setting it up again.";
-            throw new IllegalStateException(errorMessage);
-        }
-
-        cancelEvents();
-        progressReportDelay = progressReport.progressReportDelayInMilliseconds;
-        progressReportInterval = progressReport.progressReportIntervalInMilliseconds;
-        isSetup = true;
-    }
-
-    public synchronized void disable() {
-        isSetup = false;
-        cancelEvents();
-        progressReportDelay = 0;
-        progressReportInterval = 0;
-    }
-
-    public synchronized void start() {
-        cancelEvents();
-
-        if (!isSetup) {
-            String errorMessage = "AudioPlayerProgressReporter cannot be started "
-                    + "because it has not been setup yet.";
-            throw new IllegalStateException(errorMessage);
-        }
-
-        long currentOffsetIntoTrack = audioPlayerTimer.getOffsetInMilliseconds();
-
-        long timeUntilDelayReport = progressReportDelay - currentOffsetIntoTrack;
-        if (timeUntilDelayReport > 0) {
-            scheduleDelayEvent(timeUntilDelayReport);
-        }
-
-        long timeUntilIntervalReport = progressReportInterval == 0 ? 0 :
-                progressReportInterval - (currentOffsetIntoTrack % progressReportInterval);
-        if (timeUntilIntervalReport > 0) {
-            scheduleIntervalEvent(timeUntilIntervalReport, progressReportInterval);
-        }
-    }
-
-    public synchronized void stop() {
-        cancelEvents();
-    }
-
-    public synchronized boolean isSetup() {
-        return isSetup;
-    }
-
-    private void scheduleDelayEvent(long delay) {
-        progressReportDelayFuture = eventScheduler.schedule(progressReportDelayRunnable, delay,
-                TimeUnit.MILLISECONDS);
-    }
-
-    private void scheduleIntervalEvent(long delay, long interval) {
-        progressReportIntervalFuture = eventScheduler.scheduleAtFixedRate(
-                progressReportIntervalRunnable, delay, interval, TimeUnit.MILLISECONDS);
-    }
-
-    private void cancelEvents() {
-        if (progressReportDelayFuture != null && !progressReportDelayFuture.isDone()) {
-            progressReportDelayFuture.cancel(false);
-        }
-        if (progressReportIntervalFuture != null && !progressReportIntervalFuture.isDone()) {
-            progressReportIntervalFuture.cancel(false);
-        }
-    }
-}