2024年4月11日发(作者:)

Android:屏保软件的开发

Android作为一个新兴的手机智能操作系统已经越来越热门,关于Android平台下的

开发也是五花八门,最近做了一个Android手机屏保软件,分享一下,不正之处请大家多

多指教。

大致的过程是这样的:首先有一个Service,当然这个Service在主Activity中启动,

在Service中注册一个receiver,该receiver 监听系统的Screen Off(即屏幕关闭) 事件,

当然在Service中要关闭原有的屏保(关闭系统屏保需要再配置文件中获得权限)。然后在

onReceive方法中启动自己的屏保Activity。有一点需要注意到得是Screen off 事件不能

在配置文件中注册,现在还不清楚这是什么原因,多以receiver

必须在Java代码中声明和注册。

下面附上部分代码:

Service:

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

KeyguardManager mKeyguardManager=null;

private KeyguardLock mKeyguardLock=null;

关闭系统屏保:

mKeyguardManager=

(KeyguardManager)getSystemService(RD_SERVICE);

mKeyguardLock= guardLock("");

eKeyguard();

注册receiver:

BroadcastReceiver mMasterResetReciever= new BroadcastReceiver() {

public void onReceive(Context context, Intent intent){

try{

Intent i = new Intent();

gs(_ACTIVITY_NEW_TASK);

ss(context, );

ctivity(i);

//finish();

}catch(Exception e){

Log.i("Output:", ng());

}

}

};

registerReceiver(mMasterResetReciever,

IntentFilter(_SCREEN_OFF));

new

可以看到在receiver的onReceive()函数中启动一个屏保Activity。

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

android:name="E_KEYGUARD">

将屏保Activity完成,程序就可以运行啦!!

附:

将Activity全屏显示的方法:

requestWindowFeature(E_NO_TITLE);

getWindow().setFlags

(

_FULLSCREEN,

_FULLSCREEN

);

setContentView();

注意:

setContentView();全屏代码之后,否则无效

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

@Override

public boolean onKeyDown(int keyCode, KeyEvent event){

own(keyCode, event);

finish();

return true;

}