From 73d86e34bb2ce73c88f1a3496b71fe34113d1296 Mon Sep 17 00:00:00 2001 From: Conrad Chen Date: Tue, 14 Feb 2017 17:40:36 -0800 Subject: [PATCH] TIF: Fix current position not reported issue Fixes the issue that when current position or start position is 0, TIF won't report TimeShiftCurrentPositionChanged() or TimeShiftStartPositionChanged(). Test: bug fix Bug: 32211561 Change-Id: I932d772850063f05fb8fc67a4b6bea7400b6443b --- media/java/android/media/tv/TvInputService.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java index ce4a453886296..6f44e6d6e58bd 100644 --- a/media/java/android/media/tv/TvInputService.java +++ b/media/java/android/media/tv/TvInputService.java @@ -284,8 +284,8 @@ public abstract class TvInputService extends Service { private boolean mOverlayViewEnabled; private IBinder mWindowToken; private Rect mOverlayFrame; - private long mStartPositionMs; - private long mCurrentPositionMs; + private long mStartPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME; + private long mCurrentPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME; private final TimeShiftPositionTrackingRunnable mTimeShiftPositionTrackingRunnable = new TimeShiftPositionTrackingRunnable(); @@ -304,7 +304,6 @@ public abstract class TvInputService extends Service { mContext = context; mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); mHandler = new Handler(context.getMainLooper()); - mCurrentPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME; } /** @@ -631,6 +630,8 @@ public abstract class TvInputService extends Service { @MainThread @Override public void run() { + timeShiftEnablePositionTracking( + status == TvInputManager.TIME_SHIFT_STATUS_AVAILABLE); try { if (DEBUG) Log.d(TAG, "notifyTimeShiftStatusChanged"); if (mSessionCallback != null) { @@ -1465,7 +1466,8 @@ public abstract class TvInputService extends Service { @Override public void run() { long startPositionMs = onTimeShiftGetStartPosition(); - if (mStartPositionMs != startPositionMs) { + if (mStartPositionMs == TvInputManager.TIME_SHIFT_INVALID_TIME + || mStartPositionMs != startPositionMs) { mStartPositionMs = startPositionMs; notifyTimeShiftStartPositionChanged(startPositionMs); } @@ -1476,7 +1478,8 @@ public abstract class TvInputService extends Service { + "position."); currentPositionMs = mStartPositionMs; } - if (mCurrentPositionMs != currentPositionMs) { + if (mCurrentPositionMs == TvInputManager.TIME_SHIFT_INVALID_TIME + || mCurrentPositionMs != currentPositionMs) { mCurrentPositionMs = currentPositionMs; notifyTimeShiftCurrentPositionChanged(currentPositionMs); }