Android:当软键盘可见时禁用传感器

时间:2013-11-15 17:40:53

标签: java android sensor

当软键盘可见时,我希望在Android设备中广泛禁用传感器系统。因此,没有人可以根据传感器信息推断您按哪个键。但是,为了确保没有其他第三方应用程序可以恶意禁用传感器,我想在内核级别执行此操作。我的想法是在SensorManager中添加一个静态变量,并在处理传感器事件时检查它是否为真。在InputMethodManager / InputMethodService中,我将调用一个静态函数来根据键盘的状态设置变量。

仅供参考,我使用的Android版本是2.3.7。

更新

以下是我添加到ANDROID_SOURCE / framework / core / java / hardware / SensorManager.java的代码

static public class MyBoolean {
  public boolean value;
}
public volatile static MyBoolean inputActive;
private static final Object inputLock = new Object();
static {
  synchronized(inputLock) {
    inputActive = new MyBoolean();
    Log.v(TAG, "init input active : " + inputActive.hashCode());
    inputActive.value = false;
}

public static void setInputActive(boolean v) {
  synchronized(inputLock) {
    Log.v(TAG, "set input active : " + v);
    inputActive.value = v;
    Log.v(TAG, "after set input active : " + inputActive.value + " " +  SensorManager.inputActive.value + " " + inputActive.hashCode() + " " + SensorManager.inputActive.hashCode());
  }
}

在ANDROID_SOURCE / framework / core / java / inputmethodservice / InputMethodService.java中,我在showSoftInputMethod函数中调用SensorManager.setInputActive(true)。

我很确定函数被调用,因为函数中有一个输出语句。但是当我检查SensorManager中的值时,它永远不会改变。为什么不改变?

0 个答案:

没有答案