Skip to content

Commit 85b8027

Browse files
chore: add some get function for LimitedSeekRange (#40)
* chore: add some get function for LimitedSeekRange * deprecate the seekToStart
1 parent 4ada603 commit 85b8027

File tree

2 files changed

+87
-19
lines changed

2 files changed

+87
-19
lines changed

constants.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414
project.ext {
15-
releaseVersion = '1.4.1-dr4'
16-
releaseVersionCode = 1_004_001_4_00
15+
releaseVersion = '1.4.1-dr5'
16+
releaseVersionCode = 1_004_001_5_00
1717
minSdkVersion = 19
1818
// See https://developer.android.com/training/cars/media/automotive-os#automotive-module
1919
automotiveMinSdkVersion = 28

libraries/common/src/main/java/androidx/media3/common/endeavor/LimitedSeekRange.java

Lines changed: 85 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.text.TextUtils;
55
import androidx.annotation.Nullable;
66
import androidx.media3.common.C;
7+
import androidx.media3.common.ParserException;
78
import androidx.media3.common.Player;
89
import androidx.media3.common.Timeline;
910
import androidx.media3.common.util.Util;
@@ -15,6 +16,7 @@ public class LimitedSeekRange {
1516

1617
private final long startTimeMs; // UTC timestamp, millisecond
1718
private final long endTimeMs; // UTC timestamp, millisecond
19+
@Deprecated
1820
private final boolean seekToStart;
1921
private final boolean useAsLive;
2022

@@ -35,10 +37,23 @@ public long getStartTimeMs() {
3537
return factStartTimeMs;
3638
}
3739

40+
public long getOriginalStartTimeMs() {
41+
return startTimeMs;
42+
}
43+
44+
public long getOriginalEndTimeMs() {
45+
return endTimeMs;
46+
}
47+
48+
@Deprecated
3849
public boolean isSeekToStart() {
3950
return seekToStart;
4051
}
4152

53+
public boolean isUseAsLive() {
54+
return useAsLive;
55+
}
56+
4257
public void onTimelineChanged(Timeline timeline) {
4358
if (timeline == null || timeline.isEmpty()) {
4459
return;
@@ -124,37 +139,36 @@ public static long scaleDurationToSeekbarMs(long durationMs, LimitedSeekRange li
124139
return state;
125140
}
126141

127-
// Generate limited seek range.
128-
public static LimitedSeekRange from(String startDate, String endDate, boolean seekToStart) {
142+
@Nullable
143+
public static LimitedSeekRange create(String startDate, String endDate) {
129144
try {
130-
long startTimeMs = TextUtils.isEmpty(startDate) ? C.TIME_UNSET : Util.parseXsDateTime(startDate);
131-
long endTimeMs = TextUtils.isEmpty(endDate) ? C.TIME_UNSET : Util.parseXsDateTime(endDate);
132-
return from(startTimeMs, endTimeMs, seekToStart);
145+
return create(toTimeMs(startDate), toTimeMs(endDate));
133146
} catch (Exception e) {
134147
return null;
135148
}
136149
}
137150

138-
// Generate limited seek range.
139-
public static LimitedSeekRange from(String startDate, String endDate, boolean seekToStart, boolean useAsLive) {
151+
@Nullable
152+
public static LimitedSeekRange create(String startDate, String endDate, boolean useAsLive) {
140153
try {
141-
long startTimeMs = TextUtils.isEmpty(startDate) ? C.TIME_UNSET : Util.parseXsDateTime(startDate);
142-
long endTimeMs = TextUtils.isEmpty(endDate) ? C.TIME_UNSET : Util.parseXsDateTime(endDate);
143-
return from(startTimeMs, endTimeMs, seekToStart, useAsLive);
154+
return create(toTimeMs(startDate), toTimeMs(endDate), useAsLive);
144155
} catch (Exception e) {
145156
return null;
146157
}
147158
}
148159

149-
// Generate limited seek range.
150-
public static LimitedSeekRange from(long startTimeMs, long endTimeMs, boolean seekToStart) {
151-
long nowMs = System.currentTimeMillis();
152-
boolean useAsLive = !isValidTimeStamp(endTimeMs) || endTimeMs > nowMs;
153-
return from(startTimeMs, endTimeMs, seekToStart, useAsLive);
160+
@Nullable
161+
public static LimitedSeekRange create(long startTimeMs, long endTimeMs) {
162+
return create(startTimeMs, endTimeMs, isUseAsLive(endTimeMs));
154163
}
155164

156-
// Generate limited seek range.
157-
public static LimitedSeekRange from(long startTimeMs, long endTimeMs, boolean seekToStart, boolean useAsLive) {
165+
@Nullable
166+
public static LimitedSeekRange create(long startTimeMs, long endTimeMs, boolean useAsLive) {
167+
return create(startTimeMs, endTimeMs, false, useAsLive);
168+
}
169+
170+
@Nullable
171+
private static LimitedSeekRange create(long startTimeMs, long endTimeMs, boolean seekToStart, boolean useAsLive) {
158172
// Normalize the timestamp.
159173
boolean noStartTime = false;
160174
boolean noEndTime = false;
@@ -181,6 +195,60 @@ public static LimitedSeekRange from(long startTimeMs, long endTimeMs, boolean se
181195
return new LimitedSeekRange(startTimeMs, endTimeMs, seekToStart, useAsLive);
182196
}
183197

198+
private static long toTimeMs(String date) throws ParserException {
199+
return TextUtils.isEmpty(date) ? C.TIME_UNSET : Util.parseXsDateTime(date);
200+
}
201+
202+
private static boolean isUseAsLive(long endTimeMs) {
203+
long nowMs = System.currentTimeMillis();
204+
return !isValidTimeStamp(endTimeMs) || endTimeMs > nowMs;
205+
}
206+
207+
/**
208+
* @deprecated Use {@link #create(String, String)} instead.
209+
*/
210+
@Deprecated
211+
// Generate limited seek range.
212+
public static LimitedSeekRange from(String startDate, String endDate, boolean seekToStart) {
213+
try {
214+
return from(toTimeMs(startDate), toTimeMs(endDate), seekToStart);
215+
} catch (Exception e) {
216+
return null;
217+
}
218+
}
219+
220+
/**
221+
* @deprecated Use {@link #create(String, String, boolean)} instead.
222+
*/
223+
@Deprecated
224+
// Generate limited seek range.
225+
public static LimitedSeekRange from(String startDate, String endDate, boolean seekToStart, boolean useAsLive) {
226+
try {
227+
return from(toTimeMs(startDate), toTimeMs(endDate), seekToStart, useAsLive);
228+
} catch (Exception e) {
229+
return null;
230+
}
231+
}
232+
233+
/**
234+
* @deprecated Use {@link #create(long, long)} instead.
235+
*/
236+
@Deprecated
237+
// Generate limited seek range.
238+
public static LimitedSeekRange from(long startTimeMs, long endTimeMs, boolean seekToStart) {
239+
return from(startTimeMs, endTimeMs, seekToStart, isUseAsLive(endTimeMs));
240+
}
241+
242+
243+
/**
244+
* @deprecated Use {@link #create(long, long, boolean)} instead.
245+
*/
246+
@Deprecated
247+
// Generate limited seek range.
248+
public static LimitedSeekRange from(long startTimeMs, long endTimeMs, boolean seekToStart, boolean useAsLive) {
249+
return create(startTimeMs, endTimeMs, seekToStart, useAsLive);
250+
}
251+
184252
// Generate limited seek range based on current time, just for testing
185253
public static LimitedSeekRange mock(int backHours, long durationMs, boolean seekToStart) {
186254
GregorianCalendar calendar = new GregorianCalendar();

0 commit comments

Comments
 (0)