package com.DeviceTest;
|
|
import static android.view.WindowManager.LayoutParams.*;
|
|
import com.DeviceTest.helper.ConfigUtil;
|
import com.DeviceTest.helper.ControlButtonUtil;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.hardware.display.DisplayManager;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.os.PowerManager;
|
import android.os.PowerManager.WakeLock;
|
import android.os.RemoteException;
|
import android.os.SystemClock;
|
import android.provider.Settings;
|
import android.provider.Settings.SettingNotFoundException;
|
import android.util.Log;
|
import android.view.KeyEvent;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.ProgressBar;
|
import android.widget.TextView;
|
import android.os.IPowerManager;
|
import android.os.ServiceManager;
|
|
import java.lang.reflect.Method;
|
|
public class BrightnessTestActivity extends Activity {
|
private static final String TAG = BrightnessTestActivity.class
|
.getSimpleName();
|
static final int MAXIMUM_BRIGHTNESS = 255;
|
static final int MINIMUM_BRIGHTNESS = 2;
|
static final int MSG_TEST_BRIGHTNESS = 0;
|
private int mCurBrightness = -1;
|
static final int ONE_STAGE = 2;
|
MyHandler mHandler;
|
TextView mText;
|
TextView mTitle;
|
TextView progressText;
|
int mBrightness = 30;
|
boolean increase = true;
|
private static final int SEEK_BAR_RANGE = 10000;
|
private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;
|
private float oldScreenBrightness;
|
private int mScreenBrightnessDim = 20;
|
private DisplayManager mDisplayManager = null;
|
|
public BrightnessTestActivity() {
|
mHandler = new MyHandler();
|
|
}
|
|
ProgressBar progressBar;
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.brightnesstest);
|
|
setTitle(getTitle() + "----("
|
+ getIntent().getStringExtra(DeviceTest.EXTRA_TEST_PROGRESS)
|
+ ")");
|
// requestWindowFeature(Window.FEATURE_NO_TITLE);
|
getWindow().addFlags(FLAG_FULLSCREEN | FLAG_KEEP_SCREEN_ON);
|
|
progressBar = (ProgressBar) findViewById(R.id.brightnessBar);
|
progressBar.setClickable(false);
|
progressBar.setMax(MAXIMUM_BACKLIGHT);
|
//mSeekBar.setMax(SEEK_BAR_RANGE);
|
progressText = (TextView) findViewById(R.id.progressText);
|
ControlButtonUtil.initControlButtonView(this);
|
WindowManager.LayoutParams lp = getWindow().getAttributes();
|
oldScreenBrightness = lp.screenBrightness;
|
Log.d(TAG, oldScreenBrightness + " _____________________- onPause()");
|
}
|
|
protected void onResume() {
|
super.onResume();
|
this.mHandler.sendEmptyMessage(MSG_TEST_BRIGHTNESS);
|
}
|
|
protected void onPause() {
|
super.onPause();
|
Log.d(TAG, " _____________________- onPause()");
|
this.mHandler.removeMessages(MSG_TEST_BRIGHTNESS);
|
}
|
|
@Override
|
protected void onDestroy() {
|
setBrightnessToSystem(140);
|
Log.d(TAG, oldScreenBrightness + " _____________________- onDestroy()");
|
super.onDestroy();
|
}
|
|
private void setBrightness(int paramInt) {
|
WindowManager.LayoutParams lp = getWindow().getAttributes();
|
|
/*float brightness = 0;
|
|
int range = (MAXIMUM_BACKLIGHT - mScreenBrightnessDim);
|
brightness = (paramInt*range)/SEEK_BAR_RANGE + mScreenBrightnessDim;
|
mCurBrightness =(int) brightness;*/
|
float brightness = (float) paramInt / MAXIMUM_BRIGHTNESS;
|
lp.screenBrightness = (float) paramInt / MAXIMUM_BRIGHTNESS;
|
System.out.println(mBrightness + "-------------------------------------------" + brightness);
|
getWindow().setAttributes(lp);
|
}
|
|
class MyHandler extends Handler {
|
MyHandler() {
|
}
|
|
public void handleMessage(Message msg) {
|
|
super.handleMessage(msg);
|
int delay = 25;
|
if (msg.what == MSG_TEST_BRIGHTNESS) {
|
if (increase) {
|
mBrightness += ONE_STAGE;
|
if (mBrightness >= MAXIMUM_BRIGHTNESS) {
|
mBrightness = MAXIMUM_BRIGHTNESS;
|
increase = false;
|
delay = 500;
|
}
|
} else {
|
mBrightness -= ONE_STAGE;
|
if (mBrightness <= MINIMUM_BRIGHTNESS) {
|
mBrightness = MINIMUM_BRIGHTNESS;
|
increase = true;
|
delay = 500;
|
}
|
}
|
// System.out.println("==========================================="+mBrightness);
|
setBrightnessToSystem(mBrightness);
|
float brightness = mBrightness * 100;
|
|
brightness = (brightness - mScreenBrightnessDim)
|
/ (MAXIMUM_BACKLIGHT - mScreenBrightnessDim);
|
|
brightness = (int) (brightness * SEEK_BAR_RANGE);
|
//System.out.println("------------SEEK_BAR_RANGE-------------------"+mBrightness);
|
progressBar.setProgress(mBrightness);
|
progressText.setText(mBrightness + "/" + MAXIMUM_BRIGHTNESS);
|
//setBrightness(mBrightness);
|
|
sendEmptyMessageDelayed(MSG_TEST_BRIGHTNESS, delay);
|
|
}
|
}
|
|
}
|
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
|
return false;
|
}
|
return super.dispatchKeyEvent(event);
|
}
|
|
private void setBrightnessToSystem(int brightness) {
|
try {
|
if (null == mDisplayManager) {
|
mDisplayManager = getSystemService(DisplayManager.class);
|
}
|
if (Build.VERSION.SDK_INT >= ConfigUtil.ANDROID_SDK_VERSION_S) {
|
float fBrightness = 1.0f * brightness / MAXIMUM_BRIGHTNESS;
|
Method m = DisplayManager.class.getMethod("setTemporaryBrightness", int.class, float.class);
|
Method m2 = Context.class.getMethod("getDisplayId");
|
int displayId = Integer.parseInt(m2.invoke(this).toString());
|
m.invoke(mDisplayManager, displayId, fBrightness);
|
} else if (Build.VERSION.SDK_INT == ConfigUtil.ANDROID_SDK_VERSION_R) {//Build.VERSION_CODES.R
|
float fBrightness = 1.0f * brightness / MAXIMUM_BRIGHTNESS;
|
Method m = DisplayManager.class.getMethod("setTemporaryBrightness", float.class);
|
m.invoke(mDisplayManager, fBrightness);
|
} else if (Build.VERSION.SDK_INT >= ConfigUtil.ANDROID_SDK_VERSION_P) {
|
Method m = DisplayManager.class.getMethod("setTemporaryBrightness", int.class);
|
m.invoke(mDisplayManager, brightness);
|
} else {
|
IPowerManager power = IPowerManager.Stub.asInterface(
|
ServiceManager.getService(Context.POWER_SERVICE));
|
if (null != power) {
|
Method m = IPowerManager.class.getMethod("setTemporaryScreenBrightnessSettingOverride", int.class);
|
m.invoke(power, brightness);
|
}
|
}
|
} catch (Exception doe) {
|
doe.printStackTrace();
|
}
|
}
|
}
|