请问如何让android程序 长时间不操作后进入自定义logo界面,点击logo界面后恢复
启动一个服务 发一个延迟消息
朋友,我觉得你提出问题之前还是要先自己思考一下。代码我就不写了,但我还是给你提供一个思路吧。
首先,长时间不操作
怎么定义?打开APP但是超过一定时间没有点击屏幕的事件发生。这里我就要说了,屏幕点击事件比较复杂,据我所知,并没有什么接口或者方法能够检测所有的屏幕点击事件。也就是说,如果你要检测屏幕点击事件,你可能需要对屏幕上的按钮、ImageView、TextView添加监听器,甚至整个Activity的最外层ViewGroup。只要在超时时间
以内添加了监听器的任何地方触发了点击事件,都不算长时间未操作。
其次,LOGO界面,这个很简单,写一个Activity就行了,你可以设置它全屏,或者半透明,或者给它添加一个切换动画,让它看起来是淡入淡出的效果,这些都是题外话。
最重要的一点是,Android系统一般来说超过一定时间未操作就会锁屏,为了避免这种情况,你就需要在你的APP里边设置保持屏幕常亮。好了,我就说这么多,只是给你一点建议而已。
系统有这个广播的,用接收器接受这个广播。把休眠关掉然后进入自定义界面然
这是跳转页面的:
public class receiverScreen extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
{
//收到屏幕关闭的通知
Intent mainActivityIntent = new Intent(context, SleepActivity.class); // 要启动的Activity
mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mainActivityIntent);
}
}
}
这是服务里注册监听事件的:
public class serviceScreen extends Service
{
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
int retVal = super.onStartCommand(intent, flags, startId);
try
{
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new receiverScreen();
registerReceiver(mReceiver, filter);
}
catch (Exception e)
{
}
return retVal;
}
}
这是在主Activity中开启服务的,写在onCreate()中:
startService(new Intent(MainActivity.this, serviceScreen.class));