diff --git a/playbacktests/src/main/AndroidManifest.xml b/playbacktests/src/main/AndroidManifest.xml index 31b5016cef..f9f51c4e6d 100644 --- a/playbacktests/src/main/AndroidManifest.xml +++ b/playbacktests/src/main/AndroidManifest.xml @@ -21,6 +21,7 @@ android:versionName="1.4.1"> + diff --git a/playbacktests/src/main/java/com/google/android/exoplayer/playbacktests/util/HostActivity.java b/playbacktests/src/main/java/com/google/android/exoplayer/playbacktests/util/HostActivity.java index bd88280aa5..83c1b51943 100644 --- a/playbacktests/src/main/java/com/google/android/exoplayer/playbacktests/util/HostActivity.java +++ b/playbacktests/src/main/java/com/google/android/exoplayer/playbacktests/util/HostActivity.java @@ -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;