Loading services/java/com/android/server/WiredAccessoryManager.java +10 −2 Original line number Diff line number Diff line Loading @@ -325,7 +325,8 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { FileReader file = new FileReader(uei.getSwitchStatePath()); int len = file.read(buffer, 0, 1024); file.close(); curState = Integer.valueOf((new String(buffer, 0, len)).trim()); curState = validateSwitchState( Integer.valueOf((new String(buffer, 0, len)).trim())); if (curState > 0) { updateStateLocked(uei.getDevPath(), uei.getDevName(), curState); Loading @@ -350,6 +351,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { } } private int validateSwitchState(int state) { // Some drivers, namely HTC headset ones, add additional bits to // the switch state. As we only are able to deal with the states // 0, 1 and 2, mask out all the other bits return state & 0x3; } private List<UEventInfo> makeObservedUEventList() { List<UEventInfo> retVal = new ArrayList<UEventInfo>(); UEventInfo uei; Loading Loading @@ -407,7 +415,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { public void onUEvent(UEventObserver.UEvent event) { if (LOG) Slog.v(TAG, "Headset UEVENT: " + event.toString()); int state = Integer.parseInt(event.get("SWITCH_STATE")); int state = validateSwitchState(Integer.parseInt(event.get("SWITCH_STATE"))); try { String devPath = event.get("DEVPATH"); String name = event.get("SWITCH_NAME"); Loading Loading
services/java/com/android/server/WiredAccessoryManager.java +10 −2 Original line number Diff line number Diff line Loading @@ -325,7 +325,8 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { FileReader file = new FileReader(uei.getSwitchStatePath()); int len = file.read(buffer, 0, 1024); file.close(); curState = Integer.valueOf((new String(buffer, 0, len)).trim()); curState = validateSwitchState( Integer.valueOf((new String(buffer, 0, len)).trim())); if (curState > 0) { updateStateLocked(uei.getDevPath(), uei.getDevName(), curState); Loading @@ -350,6 +351,13 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { } } private int validateSwitchState(int state) { // Some drivers, namely HTC headset ones, add additional bits to // the switch state. As we only are able to deal with the states // 0, 1 and 2, mask out all the other bits return state & 0x3; } private List<UEventInfo> makeObservedUEventList() { List<UEventInfo> retVal = new ArrayList<UEventInfo>(); UEventInfo uei; Loading Loading @@ -407,7 +415,7 @@ final class WiredAccessoryManager implements WiredAccessoryCallbacks { public void onUEvent(UEventObserver.UEvent event) { if (LOG) Slog.v(TAG, "Headset UEVENT: " + event.toString()); int state = Integer.parseInt(event.get("SWITCH_STATE")); int state = validateSwitchState(Integer.parseInt(event.get("SWITCH_STATE"))); try { String devPath = event.get("DEVPATH"); String name = event.get("SWITCH_NAME"); Loading