2013-08-04 65 views

回答

3

你可能想看看這些常量

private static final int BRIGHTNESS_RAMP_RATE_FAST = 200; 
private static final int BRIGHTNESS_RAMP_RATE_SLOW = 40; 

以及它們如何在中使用0類

Controls the power state of the display. Handles the proximity sensor, light sensor, 
and animations between states including the screen off animation. 

您還可能要爲描述here

The rate sensor events are delivered at. This is only a hint to the system. 
Events may be received faster or slower than the specified rate. 
Usually events are received faster. The value must be one of SENSOR_DELAY_NORMAL, 
SENSOR_DELAY_UI, SENSOR_DELAY_GAME, or SENSOR_DELAY_FASTEST or, the desired delay 
between events in microseconds. 
Specifying the delay in microseconds only works from 
Android 2.3 (API level 9) onwards. For earlier releases, you must use one of the 
SENSOR_DELAY_* constants. 
+0

因此,基本上不是,每次都需要重新實現這個東西... – Dennis

+0

看起來如此,因爲DisplayPowerController中的方法沒有公開給開發人員(直到現在)。 – random

1

您無法更改DisplayManager中的自動亮度更改延遲,也無法更改曲線。您可以安裝控制亮度的市場應用程序之一,並讓您更好地控制亮度。請點擊這裏:https://play.google.com/store/search?q=auto+brightness&c=apps

從這裏:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/com/android/server/PowerManagerService.java#PowerManagerService.getAutoBrightnessValue%28int%2Cint%5B%5D%29

SensorEventListener mLightListener = new SensorEventListener() { 
2971  public void More ...onSensorChanged(SensorEvent event) { 
2972   synchronized (mLocks) { 
2973    // ignore light sensor while screen is turning off 
2974    if (isScreenTurningOffLocked()) { 
2975     return; 
2976    } 
2977 
2978    int value = (int)event.values[0]; 
2979    long milliseconds = SystemClock.elapsedRealtime(); 
2980    if (mDebugLightSensor) { 
2981     Slog.d(TAG, "onSensorChanged: light value: " + value); 
2982    } 
2983    mHandler.removeCallbacks(mAutoBrightnessTask); 
2984    if (mLightSensorValue != value) { 
2985     if (mLightSensorValue == -1 || 
2986       milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) { 
2987      // process the value immediately if screen has just turned on 
2988      lightSensorChangedLocked(value); 
2989     } else { 
2990      // delay processing to debounce the sensor 
2991      mLightSensorPendingValue = value; 
2992      mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY); 
2993     } 
2994    } else { 
2995     mLightSensorPendingValue = -1; 
2996    } 
2997   } 
2998  } 
2999 
3000  public void More ...onAccuracyChanged(Sensor sensor, int accuracy) { 
3001   // ignore 
3002  } 
3003 }; 

正如你所看到的,LIGHT_SENSOR_DELAY是

private static final int LIGHT_SENSOR_DELAY = 2000; 
+0

有沒有選件可以通過API來完成它在public boolean registerListener (SensorListener listener, int sensors, int rate)rate參數來看看? – Dennis

+0

我已經更新了我的答案。 –

+0

來自+ random的解決方案更新。 – Dennis