diff --git a/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java b/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java index 139e0f7caf..e86370b986 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/devicetransfer/DeviceTransferSetupFragment.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.provider.Settings; import android.text.method.LinkMovementMethod; import android.view.View; +import android.view.WindowManager; import android.widget.TextView; import android.widget.Toast; @@ -70,6 +71,8 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + Group progressGroup = view.findViewById(R.id.device_transfer_setup_fragment_progress_group); Group errorGroup = view.findViewById(R.id.device_transfer_setup_fragment_error_group); View verifyGroup = view.findViewById(R.id.device_transfer_setup_fragment_verify); @@ -274,6 +277,7 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment { @Override public void onDestroyView() { + requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); cancelTakingTooLong(); EventBus.getDefault().unregister(this); super.onDestroyView(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/devicetransfer/DeviceTransferFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/devicetransfer/DeviceTransferFragment.kt index cf87075ea7..73e392fb5f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/devicetransfer/DeviceTransferFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/devicetransfer/DeviceTransferFragment.kt @@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.restore.devicetransfer import android.os.Bundle import android.view.View +import android.view.WindowManager import android.widget.TextView import androidx.activity.OnBackPressedCallback import androidx.annotation.StringRes @@ -62,6 +63,8 @@ abstract class DeviceTransferFragment : LoggingFragment(R.layout.fragment_device override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + binding.deviceTransferFragmentCancel.setOnClickListener { cancelActiveTransfer() } @@ -80,6 +83,7 @@ abstract class DeviceTransferFragment : LoggingFragment(R.layout.fragment_device } override fun onDestroyView() { + requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) EventBus.getDefault().unregister(transferModeListener) super.onDestroyView() } diff --git a/lib/device-transfer/src/main/java/org/signal/devicetransfer/DeviceToDeviceTransferService.java b/lib/device-transfer/src/main/java/org/signal/devicetransfer/DeviceToDeviceTransferService.java index 447f808b2a..9419d8ac66 100644 --- a/lib/device-transfer/src/main/java/org/signal/devicetransfer/DeviceToDeviceTransferService.java +++ b/lib/device-transfer/src/main/java/org/signal/devicetransfer/DeviceToDeviceTransferService.java @@ -5,6 +5,7 @@ import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.net.wifi.WifiManager; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; @@ -47,6 +48,7 @@ public class DeviceToDeviceTransferService extends Service implements ShutdownCa private DeviceTransferServer server; private DeviceTransferClient client; private PowerManager.WakeLock wakeLock; + private WifiManager.WifiLock wifiLock; public static void startServer(@NonNull Context context, @NonNull ServerTask serverTask, @@ -121,6 +123,10 @@ public class DeviceToDeviceTransferService extends Service implements ShutdownCa wakeLock.release(); } + if (wifiLock != null && wifiLock.isHeld()) { + wifiLock.release(); + } + super.onDestroy(); } @@ -207,6 +213,17 @@ public class DeviceToDeviceTransferService extends Service implements ShutdownCa if (!wakeLock.isHeld()) { wakeLock.acquire(TimeUnit.HOURS.toMillis(2)); } + + if (wifiLock == null) { + WifiManager wifiManager = ContextCompat.getSystemService(this, WifiManager.class); + if (wifiManager != null) { + wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "signal:d2dwifi"); + } + } + + if (wifiLock != null && !wifiLock.isHeld()) { + wifiLock.acquire(); + } } private void updateNotification(@NonNull TransferStatus transferStatus) {