public class MainActivity extends Activity {
private Handler mHandler01 = new Handler();
private Handler mHandler02 = new Handler();
private Date lastUpdateTime;
private long timePeriod;
private float mHoldStillTime = 10;
private boolean isRunScreenSaver;
private long intervalScreenSaver = 1000;
private long intervalKeypadeSaver = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button)findViewById(R.id.start_screen_Saver)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mService = new Intent(MainActivity.this, ScreenService.class);
mService.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startService(mService);
}
});
lastUpdateTime = new Date(System.currentTimeMillis());
}
* 计时线程
*/
private Runnable mTask01 = new Runnable() {
@Override
public void run() {
Date timeNow = new Date(System.currentTimeMillis());
timePeriod = (long) timeNow.getTime() - (long) lastUpdateTime.getTime();
float timePeriodSecond = ((float) timePeriod / 1000);
if(timePeriodSecond > mHoldStillTime){
if(isRunScreenSaver == false){
mHandler02.postAtTime(mTask02, intervalScreenSaver);
isRunScreenSaver = true;
}else{
}
}else{
isRunScreenSaver = false;
}
mHandler01.postDelayed(mTask01, intervalKeypadeSaver);
}
};
* 持续屏保显示线程
*/
private Runnable mTask02 = new Runnable() {
@Override
public void run() {
if (isRunScreenSaver == true) {
showScreenSaver();
mHandler02.postDelayed(mTask02, intervalScreenSaver);
} else {
mHandler02.removeCallbacks(mTask02);
}
}
};
* 显示屏保
*/
private void showScreenSaver(){
Log.d("danxx", "显示屏保------>");
Intent intent = new Intent(MainActivity.this, ScreenSaverActivity.class);
startActivity(intent);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
updateUserActionTime();
return super.dispatchKeyEvent(event);
}
public void updateUserActionTime() {
Date timeNow = new Date(System.currentTimeMillis());
timePeriod = timeNow.getTime() - lastUpdateTime.getTime();
lastUpdateTime.setTime(timeNow.getTime());
}
@Override
protected void onResume() {
mHandler01.postAtTime(mTask01, intervalKeypadeSaver);
super.onResume();
}
@Override
protected void onPause() {
mHandler01.removeCallbacks(mTask01);
mHandler02.removeCallbacks(mTask02);
super.onPause();
}
}