--- a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -506,6 +506,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
setHdmiPlugged("1".equals(event.get("SWITCH_STATE")));
}
};
+ private UEventObserver mInhuaSoftObserver = new UEventObserver() {
+ @Override
+ public void onUEvent(UEventObserver.UEvent event) {
+ if("1".equals(event.get("SWITCH_STATE")))
+ {
+ Slog.i(TAG, "zougui -------------------status : 1-------------------------!");
+ }else
+ {
+ Slog.i(TAG, "zougui -------------------status : 0-------------------------!");
+ }
+ }
+ };
+
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
@@ -986,7 +999,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// Controls rotation and the like.
initializeHdmiState();
-
+ initializeInhuaSoftState();
// Match current screen state.
if (mPowerManager.isScreenOn()) {
screenTurningOn(null);
@@ -3728,6 +3707,37 @@ public class PhoneWindowManager implements WindowManagerPolicy {
setHdmiPlugged(!mHdmiPlugged);
}
+ void initializeInhuaSoftState() {
+ boolean plugged = false;
+ if (new File("/sys/devices/virtual/switch/ihs/state").exists()) {
+ mInhuaSoftObserver.startObserving("DEVPATH=/devices/virtual/switch/ihs");
+
+ final String filename = "/sys/class/switch/ihs/state";
+ FileReader reader = null;
+ try {
+ reader = new FileReader(filename);
+ char[] buf = new char[15];
+ int n = reader.read(buf);
+ if (n > 1) {
+ plugged = 0 != Integer.parseInt(new String(buf, 0, n-1));
+ }
+ } catch (IOException ex) {
+ Slog.w(TAG, "Couldn't read hdmi state from " + filename + ": " + ex);
+ } catch (NumberFormatException ex) {
+ Slog.w(TAG, "Couldn't read hdmi state from " + filename + ": " + ex);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException ex) {
+ }
+ }
+ }
+ }
+ Slog.i(TAG, "zougui ---------------------------------------inhuasoft status add!");
+ }
+
+
+++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -506,6 +506,19 @@ public class PhoneWindowManager implements WindowManagerPolicy {
setHdmiPlugged("1".equals(event.get("SWITCH_STATE")));
}
};
+ private UEventObserver mInhuaSoftObserver = new UEventObserver() {
+ @Override
+ public void onUEvent(UEventObserver.UEvent event) {
+ if("1".equals(event.get("SWITCH_STATE")))
+ {
+ Slog.i(TAG, "zougui -------------------status : 1-------------------------!");
+ }else
+ {
+ Slog.i(TAG, "zougui -------------------status : 0-------------------------!");
+ }
+ }
+ };
+
class SettingsObserver extends ContentObserver {
SettingsObserver(Handler handler) {
@@ -986,7 +999,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// Controls rotation and the like.
initializeHdmiState();
-
+ initializeInhuaSoftState();
// Match current screen state.
if (mPowerManager.isScreenOn()) {
screenTurningOn(null);
@@ -3728,6 +3707,37 @@ public class PhoneWindowManager implements WindowManagerPolicy {
setHdmiPlugged(!mHdmiPlugged);
}
+ void initializeInhuaSoftState() {
+ boolean plugged = false;
+ if (new File("/sys/devices/virtual/switch/ihs/state").exists()) {
+ mInhuaSoftObserver.startObserving("DEVPATH=/devices/virtual/switch/ihs");
+
+ final String filename = "/sys/class/switch/ihs/state";
+ FileReader reader = null;
+ try {
+ reader = new FileReader(filename);
+ char[] buf = new char[15];
+ int n = reader.read(buf);
+ if (n > 1) {
+ plugged = 0 != Integer.parseInt(new String(buf, 0, n-1));
+ }
+ } catch (IOException ex) {
+ Slog.w(TAG, "Couldn't read hdmi state from " + filename + ": " + ex);
+ } catch (NumberFormatException ex) {
+ Slog.w(TAG, "Couldn't read hdmi state from " + filename + ": " + ex);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException ex) {
+ }
+ }
+ }
+ }
+ Slog.i(TAG, "zougui ---------------------------------------inhuasoft status add!");
+ }
+
+
kernel: 模仿耳机检测,注册一个switch_dev_register() 就好.