《精通Android 5 多媒体开发》——第22章,第22.2节开发屏保程序的原理

简介:

本节书摘来自异步社区《精通Android 5 多媒体开发》一书中的第22章,第22.2节开发屏保程序的原理,作者 王石磊,更多章节内容可以访问云栖社区“异步社区”公众号查看

22.2 开发屏保程序的原理
精通Android 5 多媒体开发
在Android系统中开发一个屏保程序,其开发原理比较简单,具体说明如下所示。

(1)首先准备一个Service,当然这个Service在主Activity中启动;然后在Service中注册一个Receiver,该Receiver 监听系统的Screen Off(即屏幕关闭)事件。当然在Service中要关闭原有的屏保(关闭系统屏保需要再配置文件中获得权限)。

(2)然后在方法onReceive中启动自己的屏保 Activity。在此需要注意,事件Screen off不能在配置文件AndroidManifest.xml中注册,Receiver必须在Java代码中声明和注册。

根据上述原理,我们开发出一个简单的屏保程序,具体实现流程如下所示。

(1)定义如下两个变量来关闭系统原有屏保。

KeyguardManager mKeyguardManager=null;
private KeyguardLock mKeyguardLock=null;
(2)通过如下代码关闭系统屏保。

mKeyguardManager= (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock= mKeyguardManager.newKeyguardLock("");
mKeyguardLock.disableKeyguard();
(3)通过如下代码注册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。

(4)在配置文件中申请权限,具体代码如下所示。

<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);
我们可以重写onKeyDown()函数,目的是通过任意键来关闭屏保Activity,具体代码如下所示。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
   super.onKeyDown(keyCode, event);
   finish();
   return true;
}
相关文章
|
11天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
4天前
|
Java Android开发
Android开发--Intent-filter属性详解
Android开发--Intent-filter属性详解
|
4天前
|
物联网 Java 开发工具
安卓应用开发:打造未来移动生活
【5月更文挑战第10天】 随着科技的飞速发展,智能手机已成为我们日常生活中不可或缺的一部分。作为智能手机市场的两大巨头,安卓和iOS分别占据了一定的市场份额。在这篇文章中,我们将重点关注安卓应用开发,探讨如何利用先进的技术和创新思维,为用户打造更加便捷、智能的移动生活。文章将涵盖安卓应用开发的基本概念、关键技术、以及未来发展趋势等方面的内容。
|
5天前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
|
6天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
14 0
|
7天前
|
前端开发 Java Android开发
Android UI底层绘制原理
Android UI底层绘制原理
12 0
|
7天前
|
Android开发
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
Android修改默认system/bin/下可执行程序拥有者和权限,使用实例,只有root和系统app权限才能执行某个命令。
13 0
|
7天前
|
Android开发 Kotlin
Kotlin开发Android之基础问题记录
Kotlin开发Android之基础问题记录
17 1
|
7天前
|
Java Android开发
Android开发@IntDef完美替代Enum
Android开发@IntDef完美替代Enum
14 0
|
8天前
|
Android开发
Android 盒子开发过程中遇到的问题及解决方法
Android 盒子开发过程中遇到的问题及解决方法
10 2