您的位置:首页 > 移动开发 > Android开发

如何在Android中获知屏幕打开或者关闭

2014-05-06 13:54 453 查看
在有些Android应用中需要在屏幕打开或者关闭的时候进行一些处理,下面介绍一个在android应用程序中捕获屏幕打开或者关闭动作的方法:

首先创建ScreenReceiver类,该类继承自BroadcastReceiver,并实现其onReceive方法,在该类当中可判断屏幕事件的类型,并添加相关的代码。

publicclassScreenReceiverextendsBroadcastReceiver{

@Override

publicvoidonReceive(Contextcontext,Intentintent){

if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){

//dowhateveryouneedtodohere

}elseif(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){

//anddowhateveryouneedtodohere

}

}

}


然后在Activity中注册BroadcastReceiver并设置其IntenFilter

publicclassExampleActivityextendsActivity{

@Override

protectedvoidonCreate(){

//initializereceiver

IntentFilterfilter=newIntentFilter(Intent.ACTION_SCREEN_ON);

filter.addAction(Intent.ACTION_SCREEN_OFF);

BroadcastReceivermReceiver=newScreenReceiver();

registerReceiver(mReceiver,filter);

//yourcode

}

//yourcode
}[/code]

如果需要在service当中捕获屏幕打开或者关闭事件,可参照以下方法:


publicclassScreenReceiverextendsBroadcastReceiver{

privatebooleanscreenOff;

@Override

publicvoidonReceive(Contextcontext,Intentintent){

if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){

screenOff=true;

}elseif(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){

screenOff=false;

}

Intenti=newIntent(context,UpdateService.class);

i.putExtra("screen_state",screenOff);

context.startService(i);

}

}

对应的service样例代码如下:

publicstaticclassUpdateServiceextendsService{

@Override

publicvoidonCreate(){

super.onCreate();

//registerreceiverthathandlesscreenonandscreenofflogic

IntentFilterfilter=newIntentFilter(Intent.ACTION_SCREEN_ON);

filter.addAction(Intent.ACTION_SCREEN_OFF);

BroadcastReceivermReceiver=newScreenReceiver();

registerReceiver(mReceiver,filter);

}

@Override

publicvoidonStart(Intentintent,intstartId){

booleanscreenOn=intent.getBooleanExtra("screen_state",false);

if(!screenOn){

//yourcode

}else{

//yourcode

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: