Restart the MTP connection when changing transcode enabled
To workaround some issues with transcoded file sizes transferred
via MTP on Windows machines, we restart the MTP connection after
changing the transcode flag.
Test: Manual
Bug: 184117074
Bug: 190422448
Change-Id: I8d151117e1f5d23c3ec20e8c7a4b4546c96f2c84
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java
index bbaaa31..c440499 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsTranscodeMtpController.java
@@ -77,6 +77,12 @@
public boolean onPreferenceClick(Preference preference) {
SystemProperties.set(TRANSCODE_MTP_SYS_PROP_KEY,
Boolean.toString(mSwitchPreference.isChecked()));
+
+ final long previousFunctions = mUsbBackend.getCurrentFunctions();
+ // Toggle the MTP connection to reload file sizes for files shared via MTP clients
+ mUsbBackend.setCurrentFunctions(previousFunctions & ~UsbManager.FUNCTION_MTP);
+ mUsbBackend.setCurrentFunctions(previousFunctions);
+
return true;
}