我给你思路:你这个功能其实很多软件都有,那就是 一般程序有个功能 连续按两次返回键才退出。即:按一次返回键,程序会提示在按一次返回键退出,而且一般是俩秒内在按一次返回键才行,过了两秒,你按返回不行。给你个参考,就是用android中的 handler来实现,给你个例子,相信聪明的你看了之后,肯定知道怎么做了。
创新互联服务项目包括白山网站建设、白山网站制作、白山网页制作以及白山网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,白山网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到白山省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
其实改那个程序很简单,第一把onkeydown改成你传感器参数不断变化那个函数,才把他的2000改成7000。在把intent 该成你要跳转到Activity
= =怎么会哦。这个只是很简单的逻辑哦!!!!
你把代码发过来。
我给你写点点先, 看是否能给你灵感、、
int i= 0;
if(i !=5)
{
if(active == 0)
{
i++;
Timer(5000);
//执行
}
}
大概就是这样的原来,你要根据情况改下。
可以通过Handler发送延迟消息来实现判断有无操作,实现原理就是,给Activity注册OnTouch事件,当用户触摸屏幕,手指离开的时候发送一个延迟消息。
以下为实现步骤及代码:
1.创建Handler实例
Handler handler = new Handler(){
public void handlerMessage(Message msg){
}
};
2.创建一个Runnable
private Runnable runnable = new Runnable() {
@Override
public void run() {
//用户5秒没操作了
}
};
3.给Activity注册Touch事件
public boolean onTouchEvent(android.view.MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:{ //手指下来的时候,取消之前绑定的Runnable
handler.removeCallbacks(runnable);
break;
}
case MotionEvent.ACTION_UP:{ //手指离开屏幕,发送延迟消息 ,5秒后执行
handler.sendEmptyMessageDelayed(0, 1000 * 5);
break;
}
}
return super.onTouchEvent(event);
};
要起到延时的作用需要使用Handler。
举例说明:
public class Strobe extends Activity {
private LinearLayout mLinearLayout;
private Handler mHander = new Handler();
private boolean mActive = false;
private boolean mSwap = true;
private final Runnable mRunnable = new Runnable() {
public void run() {
if (mActive) {
if (mSwap) {
mLinearLayout.setBackgroundColor(Color.WHITE);
mSwap = false;
mHander.postDelayed(mRunnable, 20);
} else {
mLinearLayout.setBackgroundColor(Color.BLACK);
mSwap = true;
mHander.postDelayed(mRunnable, 100);
}
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLinearLayout = (LinearLayout) findViewById(R.id.strobe);
startStrobe();
}
private void startStrobe() {
mActive = true;
mHander.post(mRunnable);
}
}
代码的意思是:程序创建一个闪光点效果,延时显示:一个是100 ms,其它是20ms。
关于Handler
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。
延时操作,可以用下列方案:
方案1:线程阻断
try {
Thread.currentThread().sleep(2000);//阻断2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
方案2:使用Handler的postDelayed延迟操作。
mHandler .postDelayed(mRunnable, 3000); // 在Handler中执行子线程并延迟3s。
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
mHandler.sendEmptyMessage(1);
}
};
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//3s后执行代码
}
}。
/**
* 此函数用于延迟发送广播,注意此函数需要在主线程调用.
* 比如 activity 任意生命周期都是运行在主线程的.
*
* @param context
* 用来发送 broadcast 的 context ,比如 activity 实例
* @param intent
* 想要发送的intent
* @param delay
* 想要延迟的时间
*/
public static void sendBroadcastDelayed(
final Context context, final Intent intent, long delay) {
// 未指定 Thread 的 Handler 就会运行在主线程
Handler handler = new Handler();
// 延迟执行发送广播的逻辑
handler.postDelayed(new Runnable() {
@Override
public void run() {
context.sendBroadcast(intent);
}
}, delay);
}