Android:屏保软件的开发

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;

复制代码

关闭系统屏保:

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));

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

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

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

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

附:

将Activity全屏显示的方法:

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()函数来实现:

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

原文发布于微信公众号 - 非著名程序员(non-famous-coder)

原文发表时间:2014-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android机动车

Android 8.0完美适配全局dialog 悬浮窗弹出

最近项目targetSdkVersion升级到了26,出现很多问题趟了很多坑,其中就包括本篇的需要解决的问题:全局dialog 不显示。

1.3K10
来自专栏james大数据架构

Android之Notification介绍

Notification就是在桌面的状态通知栏。这主要涉及三个主要类: Notification:设置通知的各个属性。 NotificationManager:...

22670
来自专栏FreeBuf

深入挖掘APP克隆实验

0×00前言 在上一篇文章《WebView域控不严格读取内部私有文件实验》中,对webview跨域访问进行了简单的实验,后续决定深入挖掘一下APP克隆,之前文章...

300100
来自专栏Android机动车

实用的 Android 开源库整理

在Android的开发过程中,每个开发者或多或少的都使用过第三方的开源库,使用第三方的开源库可以给开发者节省大量的精力和时间,进而更好的关注应用本身的业务逻辑。

10110
来自专栏酷玩时刻

Android极速开发之设备管理器(DevicePolicyManager)

Android 2.2 SDK提供了一个可管理和操作设备的API叫DevicePolicyManager(这是设备管理的主类),使用这个API你可以接管手机的应...

23060
来自专栏Android小菜鸡

自定义Androidk全量更新组件

  自动更新功能对于一个APP来说是必备的功能,特别是对于未投放市场下载的APP,每次都让用户删掉原来的,再下载新的版本,肯定是不合适的。

13220
来自专栏Android先生

Activity、View、Window的理解一篇文章就够了

要了解这三者之间的关系,我们带着问题通过分析源码一步一步来揭开它们的神秘面纱! 文章有点长,首先要理解Activity、View、Window,我提出了一些问题...

11310
来自专栏编程思想之路

Android四大组件完全解析(二)---Service

Service两大功能 : 当应用程序不与用户交互时,运行一些需要长时间运行的操作 为其他应用提供一些功能(提供能够跨进程调用的功能) Service的配置:...

40380
来自专栏潇涧技术专栏

Art of Android Development Reading Notes 8

《Android开发艺术探索》读书笔记 (8) 第8章 理解Window和WindowManager

9210
来自专栏androidBlog

android 监听网络状态的变化及实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/de...

61410

扫码关注云+社区

领取腾讯云代金券