开发环境为eclipse,因为demo简单就没有使用android studio,android studio每次运行都要gradle编译一次,速度慢。
项目需要,做了一个Android TV 视频播放器的屏保,大概的需求就是app在没有播放视频的情况了五分钟没有操作就跳出屏保,屏保接入广告系统。我下面给出的例子demo在时间超时的时候会跳出屏幕,在接收到锁屏广播的时候也会显示屏保。
主要讲一下使用双线程来实现五分钟无操作跳出屏保,可以在application里面启动监听线程,也可以在activity的oncreated方法里面启动监听,下面是双线程实现的屏保:
package com.example.screensaverdemo;
import java.util.Date;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
/**
*
* @author Danxingxi created on 2015/11/29
*
*/
public class MainActivity extends Activity {
private Handler mHandler01 = new Handler();
private Handler mHandler02 = new Handler();
/* 上一次User有动作的Time Stamp */
private Date lastUpdateTime;
/* 计算User有几秒没有动作的 */
private long timePeriod;
/* 静止超过N秒将自动进入屏保 */
private float mHoldStillTime = 10;
/*标识当前是否进入了屏保*/
private boolean isRunScreenSaver;
/*时间间隔*/
private long intervalScreenSaver = 1000;
private long intervalKeypadeSaver = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCr