Android 屏幕保护开发思路

 代码的思路大致是这样的:首先有一个Service,当然这个Service在主Activity中启动,在Service中注册一个receiver,该receiver 监听系统的Screen Off(即屏幕关闭) 事件,当然在Service中要关闭原有的屏保(关闭系统屏保需要再配置文件中获得权限)。然后在onReceive方法中启动自己的屏保Activity。有一点需要注意到得是Screen off 事件不能在AndroidManifest.xml配置文件中注册。

       Service:

       这两个变量主要是为了关闭系统原有屏保,下面将用到

KeyguardManager mKeyguardManager=null; 
private KeyguardLock mKeyguardLock=null; 

关闭系统屏保:

mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock= mKeyguardManager.newKeyguardLock("");
mKeyguardLock.disableKeyguard();

注册receiver

BroadcastReceiver mMasterResetReciever= new BroadcastReceiver() {
public void onReceive(Context context, Intent intent){ 
try{
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(context, MyScreenSaver.class);
context.startActivity(i);
//finish();

}catch(Exception e){
Log.i("Output:", e.toString());
} 
}
};

registerReceiver(mMasterResetReciever, new IntentFilter(Intent.ACTION_SCREEN_OFF));

 

可以看到在receiveronReceive()函数中启动一个屏保Activity

       之后我们需要再配置文件中申请权限:

Java代码:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>

Activity全屏显示的方法:

Java代码:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags
(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
);

setContentView(R.layout.main);

 

注意:

       setContentView(R.layout.main);全屏代码之后,否则无效

       任意键关闭屏保Activity可以通过重写onKeyDown()函数来实现:

Java代码:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
super.onKeyDown(keyCode, event);
finish();
return true;
}

 

 

 

 

 

 

 

 

 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2013-11-22 20:01  MMLoveMeMM  阅读(1961)  评论(0)    收藏  举报