【问题标题】:How to enable proximity sensor in android如何在android中启用接近传感器
【发布时间】:2014-05-13 14:12:13
【问题描述】:

我已经在我的代码中成功配置了接近计。现在我想以编程方式关闭和打开屏幕。传感器代码工作正常,以下方法也被调用。

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    WakeLock screenWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"screenWakeLock");

    if (event.values[0] == 0) {
        screenWakeLock.acquire();
        Log.e("onSensorChanged","NEAR");
    } else {
        if (screenWakeLock != null) {
               if(screenWakeLock.isHeld())
                  screenWakeLock.release();
               screenWakeLock = null;
        }
        Log.e("onSensorChanged","FAR");  
    }
} 

我的问题是屏幕没有关闭。我还在代码中添加了所需的权限。还有什么原因???

【问题讨论】:

  • @Jonathan 为什么你在这个问题中添加了 java 标签?
  • 这个问题与 Java 代码有关......也许吧!!!
  • @JonathanMiles 我是 android 开发人员,我很确定,java 标签不适合这个问题。
  • @iago :我正在做与该问题中提到的相同的事情。

标签: android android-sensors power-management proximity


【解决方案1】:

试试这个快捷方式:

PowerManager manager = getPowerManager();
WakeLock lock = manager.newWakeLock( 32, "proximity_off");
lock.acquire();

上面的代码甚至不需要监听接近传感器改变的事件。 32 用于隐藏的WakeLock 字段,供PhoneInCallActivity 和其他类似应用程序使用。

【讨论】:

  • 我们如何取消这个?
  • lock.release(); 将释放唤醒锁并停止它。
【解决方案2】:

据我了解,wakelock 对于保持屏幕打开很有用。我没有成功使用它打开和关闭屏幕。

所以,我首先将屏幕亮度调到最低,然后让所有 GUI 元素都无法点击。这样我就解决了我的问题。

以下是方法:

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub  
    WindowManager.LayoutParams params = this.getWindow().getAttributes();

    if (event.values[0] == 0) {
        //TODO Store original brightness value
        params.screenBrightness = 0.004f;
        this.getWindow().setAttributes(params);
        enableDisableViewGroup((ViewGroup)findViewById(R.id.YOUR_MAIN_LAYOUT).getParent(),false);
        Log.e("onSensorChanged","NEAR");

    } else {
        //TODO Store original brightness value          
        params.screenBrightness = -1.0f;
        this.getWindow().setAttributes(params);                     
        enableDisableViewGroup((ViewGroup)findViewById(R.id.YOUR_MAIN_LAYOUT).getParent(),true);
        Log.e("onSensorChanged","FAR");  
    }       
}  

From here,我参考了禁用整个屏幕视图的触摸。

【讨论】:

    【解决方案3】:

    检查为此代码提交的更改,https://github.com/jitsi/jitsi-android/compare/6d356fa637ae...7aba481d773f

    getPowerManager().newWakeLock( 32, "proximity_off");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多