Merge "Fix up Looper preparation." into mnc-dev
diff --git a/tests/tests/media/src/android/media/cts/EnumDevicesTest.java b/tests/tests/media/src/android/media/cts/EnumDevicesTest.java
index 85bd5e5..f513709 100644
--- a/tests/tests/media/src/android/media/cts/EnumDevicesTest.java
+++ b/tests/tests/media/src/android/media/cts/EnumDevicesTest.java
@@ -37,11 +37,6 @@
boolean mAddCallbackCalled = false;
boolean mRemoveCallbackCalled = false;
- static {
- // We're going to use a Handler
- Looper.prepare();
- }
-
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -156,6 +151,23 @@
}
}
+ /*
+ * tests if the Looper for the current thread has been prepared,
+ * If not, it makes one, prepares it and returns it.
+ * If this returns non-null, the caller is reponsible for calling quit()
+ * on the returned Looper.
+ */
+ private Looper prepareIfNeededLooper() {
+ // non-null Handler
+ Looper myLooper = null;
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ myLooper = Looper.myLooper();
+ assertNotNull(myLooper);
+ }
+ return myLooper;
+ }
+
public void test_deviceCallback() {
// null callback?
mAudioManager.registerAudioDeviceCallback(null,null);
@@ -174,7 +186,8 @@
// remove twice
mAudioManager.unregisterAudioDeviceCallback(callback);
- // non-null Handler
+ Looper myLooper = prepareIfNeededLooper();
+
mAudioManager.registerAudioDeviceCallback(callback, new Handler());
// unregister null callback
mAudioManager.unregisterAudioDeviceCallback(null);
@@ -184,6 +197,10 @@
mAudioManager.unregisterAudioDeviceCallback(callback);
// remove twice
mAudioManager.unregisterAudioDeviceCallback(callback);
+
+ if (myLooper != null) {
+ myLooper.quit();
+ }
}
//TODO - Need tests for device connect/disconnect callbacks
diff --git a/tests/tests/media/src/android/media/cts/RoutingTest.java b/tests/tests/media/src/android/media/cts/RoutingTest.java
index 6e3c06f..c0e9a3e 100644
--- a/tests/tests/media/src/android/media/cts/RoutingTest.java
+++ b/tests/tests/media/src/android/media/cts/RoutingTest.java
@@ -43,11 +43,6 @@
private AudioManager mAudioManager;
- static {
- // We're going to use a Handler
- Looper.prepare();
- }
-
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -103,6 +98,23 @@
audioTrack.release();
}
+ /*
+ * tests if the Looper for the current thread has been prepared,
+ * If not, it makes one, prepares it and returns it.
+ * If this returns non-null, the caller is reponsible for calling quit()
+ * on the returned Looper.
+ */
+ private Looper prepareIfNeededLooper() {
+ // non-null Handler
+ Looper myLooper = null;
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ myLooper = Looper.myLooper();
+ assertNotNull(myLooper);
+ }
+ return myLooper;
+ }
+
private class AudioTrackRoutingListener implements AudioTrack.OnRoutingChangedListener {
public void onRoutingChanged(AudioTrack audioTrack) {}
}
@@ -122,11 +134,15 @@
audioTrack.removeOnRoutingChangedListener(listener);
+ Looper myLooper = prepareIfNeededLooper();
audioTrack.addOnRoutingChangedListener(listener, new Handler());
audioTrack.removeOnRoutingChangedListener(listener);
audioTrack.release();
+ if (myLooper != null) {
+ myLooper.quit();
+ }
}
private AudioRecord allocAudioRecord() {
@@ -153,7 +169,6 @@
// Can't do it so skip this test
return;
}
-
AudioRecord audioRecord = allocAudioRecord();
audioRecord.addOnRoutingChangedListener(null, null);
@@ -168,11 +183,15 @@
audioRecord.removeOnRoutingChangedListener(listener);
+ Looper myLooper = prepareIfNeededLooper();
audioRecord.addOnRoutingChangedListener(listener, new Handler());
audioRecord.removeOnRoutingChangedListener(listener);
audioRecord.release();
+ if (myLooper != null) {
+ myLooper.quit();
+ }
}
public void test_audioRecord_preferredDevice() {