Testing audioTrack.getRoutedDevice()
Change-Id: I02ca769d7315258ede9d86c74528d8b14690c1b2
diff --git a/tests/tests/media/src/android/media/cts/RoutingTest.java b/tests/tests/media/src/android/media/cts/RoutingTest.java
index 76bb68d..9af450b 100644
--- a/tests/tests/media/src/android/media/cts/RoutingTest.java
+++ b/tests/tests/media/src/android/media/cts/RoutingTest.java
@@ -33,6 +33,8 @@
import android.util.Log;
+import java.lang.Runnable;
+
/**
* TODO: Insert description here. (generated by pmclean)
*/
@@ -201,4 +203,71 @@
audioRecord.release();
}
+
+ private class AudioTrackFiller implements Runnable {
+ AudioTrack mAudioTrack;
+ int mBufferSize;
+
+ boolean mPlaying;
+
+ short[] mAudioData;
+
+ public AudioTrackFiller(AudioTrack audioTrack, int bufferSize) {
+ mAudioTrack = audioTrack;
+ mBufferSize = bufferSize;
+ mPlaying = false;
+
+ // setup audio data (silence will suffice)
+ mAudioData = new short[mBufferSize];
+ for (int index = 0; index < mBufferSize; index++) {
+ mAudioData[index] = 0;
+ }
+ }
+
+ public void start() { mPlaying = true; }
+ public void stop() { mPlaying = false; }
+
+ @Override
+ public void run() {
+ while (mAudioTrack != null && mPlaying) {
+ mAudioTrack.write(mAudioData, 0, mBufferSize);
+ }
+ }
+ }
+
+ public void test_audioTrack_getRoutedDevice() {
+ AudioDeviceInfo[] deviceList = mAudioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
+
+ int bufferSize =
+ AudioTrack.getMinBufferSize(
+ 41000,
+ AudioFormat.CHANNEL_OUT_STEREO,
+ AudioFormat.ENCODING_PCM_16BIT);
+ AudioTrack audioTrack =
+ new AudioTrack(
+ AudioManager.STREAM_MUSIC,
+ 41000,
+ AudioFormat.CHANNEL_OUT_STEREO,
+ AudioFormat.ENCODING_PCM_16BIT,
+ bufferSize,
+ AudioTrack.MODE_STREAM);
+
+ // audioTrack_.setPreferredDevice(mRoutingDevice);
+ AudioTrackFiller filler = new AudioTrackFiller(audioTrack, bufferSize);
+ filler.start();
+
+ audioTrack.play();
+
+ Thread fillerThread = new Thread(filler);
+ fillerThread.start();
+
+ try { Thread.sleep(1000); } catch (InterruptedException ex) {}
+
+ // No explicit route
+ AudioDeviceInfo routedDevice = audioTrack.getRoutedDevice();
+ assertNotNull(routedDevice); // we probably can't say anything more than this
+
+ filler.stop();
+ audioTrack.release();
+ }
}