Fix issue 2676107.

Added test for maximum record start time on devices claiming
PackageManager.FEATURE_AUDIO_LOW_LATENCY feature.

Change-Id: I284e1ba241677c48d3e9ad237e4276fdbdc10fcd
diff --git a/tests/tests/media/src/android/media/cts/AudioRecordTest.java b/tests/tests/media/src/android/media/cts/AudioRecordTest.java
index 5f6fc2c..74b0952 100644
--- a/tests/tests/media/src/android/media/cts/AudioRecordTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioRecordTest.java
@@ -18,6 +18,7 @@
 
 import java.nio.ByteBuffer;
 
+import android.content.pm.PackageManager;
 import android.media.AudioFormat;
 import android.media.AudioRecord;
 import android.media.MediaRecorder;
@@ -40,6 +41,7 @@
     private boolean mIsOnPeriodicNotificationCalled;
     private boolean mIsHandleMessageCalled;
     private Looper mLooper;
+    private int MAX_RECORD_START_TIME_MS = 100;
 
     @Override
     protected void setUp() throws Exception {
@@ -228,6 +230,9 @@
         final int RECORD_TIME = 10000;
         assertEquals(AudioRecord.STATE_INITIALIZED, mAudioRecord.getState());
 
+        PackageManager pm = getContext().getPackageManager();
+        boolean isLowLatency = pm.hasSystemFeature(PackageManager.FEATURE_AUDIO_LOW_LATENCY);
+
         int markerInFrames = mAudioRecord.getSampleRate() / 2;
         assertEquals(AudioRecord.SUCCESS,
                 mAudioRecord.setNotificationMarkerPosition(markerInFrames));
@@ -253,6 +258,10 @@
         byte[] byteData = new byte[BUFFER_SIZE];
         long time = System.currentTimeMillis();
         mAudioRecord.startRecording();
+        if (isLowLatency) {
+            assertTrue("Record start time too long",
+                    (System.currentTimeMillis() - time) < MAX_RECORD_START_TIME_MS);
+        }
         assertEquals(AudioRecord.RECORDSTATE_RECORDING, mAudioRecord.getRecordingState());
         while (System.currentTimeMillis() - time < RECORD_TIME) {
             Thread.sleep(SLEEP_TIME);