Use low latency WifiLock on Android Q

This commit is contained in:
Cameron Gutman 2019-06-05 21:09:55 -07:00
parent b461d546d6
commit 1cb3588841

View File

@ -119,7 +119,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private MediaCodecDecoderRenderer decoderRenderer; private MediaCodecDecoderRenderer decoderRenderer;
private boolean reportedCrash; private boolean reportedCrash;
private WifiManager.WifiLock wifiLock; private WifiManager.WifiLock highPerfWifiLock;
private WifiManager.WifiLock lowLatencyWifiLock;
private boolean connectedToUsbDriverService = false; private boolean connectedToUsbDriverService = false;
private ServiceConnection usbDriverServiceConnection = new ServiceConnection() { private ServiceConnection usbDriverServiceConnection = new ServiceConnection() {
@ -228,9 +229,15 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// Make sure Wi-Fi is fully powered up // Make sure Wi-Fi is fully powered up
WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "Limelight"); highPerfWifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "Moonlight High Perf Lock");
wifiLock.setReferenceCounted(false); highPerfWifiLock.setReferenceCounted(false);
wifiLock.acquire(); highPerfWifiLock.acquire();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
lowLatencyWifiLock = wifiMgr.createWifiLock(WifiManager.WIFI_MODE_FULL_LOW_LATENCY, "Moonlight Low Latency Lock");
lowLatencyWifiLock.setReferenceCounted(false);
lowLatencyWifiLock.acquire();
}
String host = Game.this.getIntent().getStringExtra(EXTRA_HOST); String host = Game.this.getIntent().getStringExtra(EXTRA_HOST);
String appName = Game.this.getIntent().getStringExtra(EXTRA_APP_NAME); String appName = Game.this.getIntent().getStringExtra(EXTRA_APP_NAME);
@ -702,7 +709,12 @@ public class Game extends Activity implements SurfaceHolder.Callback,
inputManager.unregisterInputDeviceListener(controllerHandler); inputManager.unregisterInputDeviceListener(controllerHandler);
} }
wifiLock.release(); if (lowLatencyWifiLock != null) {
lowLatencyWifiLock.release();
}
if (highPerfWifiLock != null) {
highPerfWifiLock.release();
}
if (connectedToUsbDriverService) { if (connectedToUsbDriverService) {
// Unbind from the discovery service // Unbind from the discovery service