@Override public void onTrackException(AudioTrack track, FriendlyException exception) { dispatchEvent(new TrackExceptionEvent(this, track, exception)); }
/** * @param value True to pause, false to resume */ public void setPaused(boolean value) { if (paused.compareAndSet(!value, value)) { if (value) { dispatchEvent(new PlayerPauseEvent(this)); } else { dispatchEvent(new PlayerResumeEvent(this)); lastReceiveTime = System.nanoTime(); } } }
@Override public void onTrackStuck(AudioTrack track, long thresholdMs) { dispatchEvent(new TrackStuckEvent(this, track, thresholdMs)); }
private void stopWithReason(AudioTrackEndReason reason) { shadowTrack = null; synchronized (trackSwitchLock) { InternalAudioTrack previousTrack = activeTrack; activeTrack = null; if (previousTrack != null) { previousTrack.stop(); dispatchEvent(new TrackEndEvent(this, previousTrack, reason)); } } }
private void checkStuck(AudioTrack track) { if (!stuckEventSent && System.nanoTime() - lastReceiveTime > manager.getTrackStuckThresholdNanos()) { stuckEventSent = true; dispatchEvent(new TrackStuckEvent(this, track, TimeUnit.NANOSECONDS.toMillis(manager.getTrackStuckThresholdNanos()))); } }
private void handleTerminator(InternalAudioTrack track) { synchronized (trackSwitchLock) { if (activeTrack == track) { activeTrack = null; dispatchEvent(new TrackEndEvent(this, track, track.getActiveExecutor().failedBeforeLoad() ? LOAD_FAILED : FINISHED)); } } }
dispatchEvent(new TrackEndEvent(this, previousTrack, newTrack == null ? STOPPED : REPLACED)); dispatchEvent(new TrackStartEvent(this, newTrack));