2010-11-23 17 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

屏幕關閉由代理傳感器,而不是光傳感器控制。 您可以刪除電話應用程序中的代理服務器傳感器的註冊。