mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-17 23:43:34 +01:00
Improve device transfer reliability.
This commit is contained in:
committed by
Alex Hart
parent
0c4c280a50
commit
3e9146a6f5
@@ -8,6 +8,7 @@ import android.os.Bundle;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
@@ -70,6 +71,8 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
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 progressGroup = view.findViewById(R.id.device_transfer_setup_fragment_progress_group);
|
||||||
Group errorGroup = view.findViewById(R.id.device_transfer_setup_fragment_error_group);
|
Group errorGroup = view.findViewById(R.id.device_transfer_setup_fragment_error_group);
|
||||||
View verifyGroup = view.findViewById(R.id.device_transfer_setup_fragment_verify);
|
View verifyGroup = view.findViewById(R.id.device_transfer_setup_fragment_verify);
|
||||||
@@ -274,6 +277,7 @@ public abstract class DeviceTransferSetupFragment extends LoggingFragment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
|
requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||||
cancelTakingTooLong();
|
cancelTakingTooLong();
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.thoughtcrime.securesms.restore.devicetransfer
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.WindowManager
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
@@ -62,6 +63,8 @@ abstract class DeviceTransferFragment : LoggingFragment(R.layout.fragment_device
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
|
|
||||||
binding.deviceTransferFragmentCancel.setOnClickListener {
|
binding.deviceTransferFragmentCancel.setOnClickListener {
|
||||||
cancelActiveTransfer()
|
cancelActiveTransfer()
|
||||||
}
|
}
|
||||||
@@ -80,6 +83,7 @@ abstract class DeviceTransferFragment : LoggingFragment(R.layout.fragment_device
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
EventBus.getDefault().unregister(transferModeListener)
|
EventBus.getDefault().unregister(transferModeListener)
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import android.app.PendingIntent;
|
|||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
@@ -47,6 +48,7 @@ public class DeviceToDeviceTransferService extends Service implements ShutdownCa
|
|||||||
private DeviceTransferServer server;
|
private DeviceTransferServer server;
|
||||||
private DeviceTransferClient client;
|
private DeviceTransferClient client;
|
||||||
private PowerManager.WakeLock wakeLock;
|
private PowerManager.WakeLock wakeLock;
|
||||||
|
private WifiManager.WifiLock wifiLock;
|
||||||
|
|
||||||
public static void startServer(@NonNull Context context,
|
public static void startServer(@NonNull Context context,
|
||||||
@NonNull ServerTask serverTask,
|
@NonNull ServerTask serverTask,
|
||||||
@@ -121,6 +123,10 @@ public class DeviceToDeviceTransferService extends Service implements ShutdownCa
|
|||||||
wakeLock.release();
|
wakeLock.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wifiLock != null && wifiLock.isHeld()) {
|
||||||
|
wifiLock.release();
|
||||||
|
}
|
||||||
|
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,6 +213,17 @@ public class DeviceToDeviceTransferService extends Service implements ShutdownCa
|
|||||||
if (!wakeLock.isHeld()) {
|
if (!wakeLock.isHeld()) {
|
||||||
wakeLock.acquire(TimeUnit.HOURS.toMillis(2));
|
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) {
|
private void updateNotification(@NonNull TransferStatus transferStatus) {
|
||||||
|
|||||||
Reference in New Issue
Block a user