MediaPlayerTest: improve timeout for testSetNextMediaPlayer

The testSetNextMediaPlayer timeout consists of the playback time,
the time assuming ANR occurs, and the listener latency.

Bug: 271061009
Test: run cts -m CtsMediaPlayerTestCases -t
android.media.player.cts.MediaPlayerTest#testSetNextMediaPlayer
Change-Id: I70623ab44ea341fb48c3ce2c1c1910f95e1cbcb0
Signed-off-by: guochuang <guochuang@xiaomi.corp-partner.google.com>
diff --git a/tests/tests/media/player/src/android/media/player/cts/MediaPlayerTest.java b/tests/tests/media/player/src/android/media/player/cts/MediaPlayerTest.java
index 488f4d3..5ac36f0 100644
--- a/tests/tests/media/player/src/android/media/player/cts/MediaPlayerTest.java
+++ b/tests/tests/media/player/src/android/media/player/cts/MediaPlayerTest.java
@@ -115,6 +115,8 @@
     private static final int  RECORDED_VIDEO_HEIGHT = 144;
     private static final long RECORDED_DURATION_MS  = 3000;
     private static final float FLOAT_TOLERANCE = .0001f;
+    private static final int PLAYBACK_DURATION_MS  = 10000;
+    private static final int ANR_DETECTION_TIME_MS  = 20000;
 
     private final Vector<Integer> mTimedTextTrackIndex = new Vector<>();
     private final Monitor mOnTimedTextCalled = new Monitor();
@@ -713,9 +715,9 @@
             player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
             player.prepare();
             // Test needs the mediaplayer to playback at least about 5 seconds of content.
-            // Clip used here has a duration of 61 seconds, so seek to 50 seconds in the media file.
+            // Clip used here has a duration of 61 seconds, given PLAYBACK_DURATION_MS for play.
             // This leaves enough remaining time, with gapless enabled or disabled,
-            player.seekTo(50000);
+            player.seekTo(player.getDuration() - PLAYBACK_DURATION_MS);
         }
     }
 
@@ -757,6 +759,8 @@
 
     @Test
     public void testSetNextMediaPlayer() throws Exception {
+        final int TOTAL_TIMEOUT_MS = PLAYBACK_DURATION_MS * 4 + ANR_DETECTION_TIME_MS
+                        + 5000 /* listener latency(ms) */;
         initMediaPlayer(mMediaPlayer);
 
         final Monitor mTestCompleted = new Monitor();
@@ -770,9 +774,9 @@
                     return;
                 }
                 long now = SystemClock.elapsedRealtime();
-                if ((now - startTime) > 45000) {
-                    // We've been running for 45 seconds and still aren't done, so we're stuck
-                    // somewhere. Signal ourselves to dump the thread stacks.
+                if ((now - startTime) > TOTAL_TIMEOUT_MS) {
+                    // We've been running beyond TOTAL_TIMEOUT and still aren't done,
+                    // so we're stuck somewhere. Signal ourselves to dump the thread stacks.
                     android.os.Process.sendSignal(android.os.Process.myPid(), 3);
                     SystemClock.sleep(2000);
                     fail("Test is stuck, see ANR stack trace for more info. You may need to" +