package com.skcraft.playblock.media;
import com.skcraft.playblock.util.Validate;
/**
* Holds information about media that is currently playing.
*/
public class PlayingMedia {
private final Media media;
private final long startTime;
private PlayingMedia(Media media, long startTime) {
Validate.notNull(media);
this.media = media;
this.startTime = startTime;
}
public Media getMedia() {
return media;
}
public long getStartTime() {
return startTime;
}
public long getPosition() {
if (startTime < 0) {
return -1;
}
return System.currentTimeMillis() - startTime;
}
public long getCalculatedPosition() {
if (startTime < 0) {
return 0;
}
return System.currentTimeMillis() - startTime;
}
public static PlayingMedia fromRelative(Media media, long position) {
if (position < 0) {
return new PlayingMedia(media, -1);
}
return new PlayingMedia(media, System.currentTimeMillis() - position);
}
public static PlayingMedia fromAbsolute(Media media, long startTime) {
if (startTime < 0) {
return new PlayingMedia(media, -1);
}
return new PlayingMedia(media, startTime);
}
public static PlayingMedia fromNow(Media media) {
return new PlayingMedia(media, System.currentTimeMillis());
}
}