2010-11-23 88 views
3

当您在Android手机上通话时,光线感应器正在工作。 如果您覆盖屏幕的左上角,显示屏会变黑,而您看不到任何东西。通话期间禁用光线感应器 - Android

我想取消该功能,我尝试使用Android SensorsLight Sensor但它不起作用。

这是我的代码:

senMgrLight=(SensorManager)getSystemService(Context.SENSOR_SERVICE); 
    senMgrLight.registerListener(onSensorListener, 
      senMgrLight.getDefaultSensor(Sensor.TYPE_LIGHT), 
       SensorManager.SENSOR_DELAY_FASTEST); 

感谢。

回答

2

你需要使用的传感器是接近传感器, 试试这个,这会让你知道,如果传感器被隐藏或没有(和它的作品,而你在通话中)

SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
     sm.registerListener(new SensorEventListener() { 

      @Override 
      public void onSensorChanged(SensorEvent event) { 
       Log.i(TAG,"sensor: " + event.sensor.getName() + ", values: " + Arrays.toString(event.values)); 

      } 

      @Override 
      public void onAccuracyChanged(Sensor sensor, int accuracy) { 
       Log.i(TAG,"accuracy change: " + sensor + ", accuracy: " + accuracy); 

      } 
     }, sm.getDefaultSensor(Sensor.TYPE_PROXIMITY),SensorManager.SENSOR_DELAY_FASTEST); 
1

我会使用类Settings.System在进行调用之前通过getInt()读取SCREEN_BRIGHTNESSSCREEN_BRIGHTNESS_MODE。然后,我会通过setInt()设置新值,即亮度为255,模式为SCREEN_BRIGHTNESS_MODE_MANUAL - 这应该使亮度达到最大值。

通话挂断后,您可以恢复您存储的旧值,然后通过setInt()更改值,以便用户恢复其初始设置。 :-)

不要忘记该模式仅适用于Android 2.2及更高版本(API级别8),因此如果您想要定位较旧的Android版本,则必须使用反射。当然,你一定需要权限来编写系统设置。

+0

不仅屏幕变暗,而且按钮也停止工作。这是接近传感器的“功能”,用于在通话时禁用意外触摸事件。如果我们在这里“攻击”原因而不是修补结果,那就更好了。是吗? – TheCodeArtist 2011-03-04 16:57:21

1

屏幕关闭由代理传感器,而不是光传感器控制。 您可以删除电话应用程序中的代理服务器传感器的注册。