Make certain we have appropriate locks held for playback tests.

This commit is contained in:
Oliver Woodman 2015-09-18 18:21:26 +01:00
parent 3538e57797
commit 8022d28e04
2 changed files with 37 additions and 0 deletions

View File

@ -21,6 +21,7 @@
android:versionName="1.4.1">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="22"/>

View File

@ -19,11 +19,18 @@ import static junit.framework.Assert.fail;
import com.google.android.exoplayer.playbacktests.R;
import com.google.android.exoplayer.util.Assertions;
import com.google.android.exoplayer.util.Util;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.Bundle;
import android.os.ConditionVariable;
import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;
@ -78,6 +85,9 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba
private static final String TAG = "HostActivity";
private WakeLock wakeLock;
private WifiLock wifiLock;
private SurfaceView surfaceView;
private Handler mainHandler;
private CheckFinishedRunnable checkFinishedRunnable;
@ -137,6 +147,18 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba
checkFinishedRunnable = new CheckFinishedRunnable();
}
@Override
public void onStart() {
Context appContext = getApplicationContext();
WifiManager wifiManager = (WifiManager) appContext.getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiManager.createWifiLock(getWifiLockMode(), TAG);
wifiLock.acquire();
PowerManager powerManager = (PowerManager) appContext.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wakeLock.acquire();
super.onStart();
}
@Override
public void onResume() {
super.onResume();
@ -149,6 +171,15 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba
maybeReleaseHostedTest();
}
@Override
public void onStop() {
super.onStop();
wakeLock.release();
wakeLock = null;
wifiLock.release();
wifiLock = null;
}
// SurfaceHolder.Callback
@Override
@ -190,6 +221,11 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba
}
}
@SuppressLint("InlinedApi")
private static final int getWifiLockMode() {
return Util.SDK_INT < 12 ? WifiManager.WIFI_MODE_FULL : WifiManager.WIFI_MODE_FULL_HIGH_PERF;
}
private final class CheckFinishedRunnable implements Runnable {
private static final long CHECK_INTERVAL_MS = 1000;