前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android:屏保软件的开发

Android:屏保软件的开发

作者头像
非著名程序员
发布2018-02-01 15:55:09
2.6K0
发布2018-02-01 15:55:09
举报
文章被收录于专栏:非著名程序员非著名程序员

Android作为一个新兴的手机智能操作系统已经越来越热门,关于Android平台下的开发也是五花八门,最近做了一个Android手机屏保软件,分享一下,不正之处请大家多多指教。

大致的过程是这样的:首先有一个Service,当然这个Service在主Activity中启动,在Service中注册一个receiver,该receiver 监听系统的Screen Off(即屏幕关闭) 事件,当然在Service中要关闭原有的屏保(关闭系统屏保需要再配置文件中获得权限)。然后在onReceive方法中启动自己的屏保Activity。有一点需要注意到得是Screen off 事件不能在AndroidManifest.xml配置文件中注册,现在还不清楚这是什么原因,多以receiver必须在java代码中声明和注册。

下面附上部分代码:

Service:

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

KeyguardManager mKeyguardManager=null;

private KeyguardLock mKeyguardLock=null;

复制代码

关闭系统屏保:

代码语言:js
复制
mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock= mKeyguardManager.newKeyguardLock("");
mKeyguardLock.disableKeyguard();

注册receiver:

代码语言:js
复制
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));

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

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

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

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

附:

将Activity全屏显示的方法:

代码语言:js
复制
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()函数来实现:

代码语言:js
复制
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
     super.onKeyDown(keyCode, event);
     finish();
     return true;
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非著名程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档