Merge "Take another pass at detecting USB connections."

This commit is contained in:
TreeHugger Robot
2017-02-23 21:11:50 +00:00
committed by Android (Google) Code Review

View File

@@ -19,13 +19,9 @@ package com.android.server;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.UserInfo;
import android.os.BatteryManager;
import android.os.BatteryProperties;
import android.os.Build;
import android.os.IBatteryPropertiesListener;
import android.os.IBatteryPropertiesRegistrar;
import android.os.FileUtils;
import android.os.RecoverySystem;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -34,14 +30,12 @@ import android.provider.Settings;
import android.text.format.DateUtils;
import android.util.ExceptionUtils;
import android.util.MathUtils;
import android.util.MutableBoolean;
import android.util.Slog;
import android.util.SparseArray;
import com.android.internal.util.ArrayUtils;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.io.File;
/**
* Utilities to help rescue the system from crash loops. Callers are expected to
@@ -325,30 +319,13 @@ public class RescueParty {
/**
* Hacky test to check if the device has an active USB connection, which is
* a good proxy for someone doing local development work. It uses a low
* level call since we may not have started {@link BatteryManager} yet.
* a good proxy for someone doing local development work.
*/
private static boolean isUsbActive() {
final MutableBoolean res = new MutableBoolean(false);
final CountDownLatch latch = new CountDownLatch(1);
final IBatteryPropertiesListener listener = new IBatteryPropertiesListener.Stub() {
@Override
public void batteryPropertiesChanged(BatteryProperties props) {
res.value = props.chargerUsbOnline;
latch.countDown();
}
};
try {
final IBatteryPropertiesRegistrar bpr = IBatteryPropertiesRegistrar.Stub
.asInterface(ServiceManager.getService("batteryproperties"));
bpr.registerListener(listener);
try {
latch.await(5, TimeUnit.SECONDS);
} finally {
bpr.unregisterListener(listener);
}
return res.value;
final String state = FileUtils
.readTextFile(new File("/sys/class/android_usb/android0/state"), 128, "");
return "CONFIGURED".equals(state.trim());
} catch (Throwable t) {
Slog.w(TAG, "Failed to determine if device was on USB", t);
return false;