《精通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;
}
时间: 2024-09-26 20:10:12

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

《精通Android 5 多媒体开发》——导读

目 录前 言 第一篇 基础技术篇 第1章 Android技术概述 1.1 智能手机系统介绍 1.2 搭建Android应用开发环境 第2章 Android技术核心框架分析第3章 获取并分析Android源码第二篇 系统分析篇第4章 Android多媒体框架第5章 音频系统框架第6章 视频系统框架 6.1 视频系统结构 6.2 分析硬件抽象层6.3 实现Overlay硬件抽象层 第7章 照相机系统第8章 Alarm时钟系统第9章 振动器系统第三篇 典型应用篇第10章 二维图像渲染第11章 绘制二维

《精通Android 5 多媒体开发》——第22章,第22.3节开发一个屏保程序

22.3 开发一个屏保程序精通Android 5 多媒体开发了解了在Android系统中开发屏保程序的基本原理后,在本节的内容中,将通过一个具体实例的实现流程,来详细讲解开发Android屏保程序的基本流程.本实例的源代码保存在"daima22pingbao"中,下面开始讲解本实例的具体实现流程. 22.3.1 准备素材图片在本实例中,设置屏保程序轮换显示5幅图片,图片的大小是320×480.本实例的素材图片保存在"resdrawable"目录下,效果如图22-1所

《精通Android 5 多媒体开发》——第22章,第22.1节屏幕保护程序介绍

22.1 屏幕保护程序介绍精通Android 5 多媒体开发屏幕保护设计的初衷是为了防止电脑因无人操作而使显示器长时间显示同一个画面,导致老化而缩短显示器寿命.另外,虽然屏幕保护并不是专门为省电而设计的,但一般Windows下的屏幕保护程序都比较暗,大幅度降低屏幕亮度,有一定的省电作用.现行显示器分为两种--CRT显示器和LCD显示器,屏幕保护程序对两种显示器有不同影响. 22.1.1 屏幕保护程序的作用屏幕保护主要有如下3个作用. (1)保护显象管. 由于长时间静止的Windows画面会让CR

《精通Android 5 多媒体开发》——第1章,第1.1节智能手机系统介绍

1.1 智能手机系统介绍 精通Android 5 多媒体开发 在Android系统诞生之前,智能手机这个新鲜事物大大丰富了人们的生活,得到了广大手机用户的青睐,各大手机厂商纷纷建立了各种智能手机操作系统来抢占市场份额.Android系统就是在这个风起云涌的历史背景下诞生的. 1.1.1 何谓智能手机 智能手机具有像个人电脑那样强大的功能,拥有独立的操作系统,允许用户自行安装应用软件.游戏等第三方服务商提供的程序,并且通过移动通信网络接入到互联网络中.在Android系统诞生之前已经有很多优秀的智

《精通Android 5 多媒体开发》——第1章,第1.2节搭建Android应用开发环境

1.2 搭建Android应用开发环境 精通Android 5 多媒体开发 "工欲善其事,必先利其器",意思是要想高效完成一件事,需要有一个合适的工具.对于Android开发人员来说,开发工具同样至关重要.作为一项新兴技术,在进行开发前首先要搭建一个对应的开发环境.而在搭建开发环境前,需要了解安装开发工具所需要的硬件和软件配置条件. 注意: Android开发包括底层开发和应用开发.底层开发一般是指和硬件相关的开发,并且是基于Linux环境的,例如开发驱动程序.应用开发是指开发能在An

《精通Android 5 多媒体开发》——第6章,第6.1节视频系统结构

6.1 视频系统结构精通Android 5 多媒体开发在Android系统中,视频输出系统对应的是Overlay子系统,此系统是Android的一个可选系统,用于加速显示输出视频数据.视频输出系统的硬件通常叠加在主显示区之上的额外的叠加显示区.这个额外的叠加显示区和主显示区使用独立的显示内存.在通常情况下,主显示区用于输出图形系统,通常是RGB颜色空间.额外显示区用于输出视频,通常是YUV颜色空间.主显示区和叠加显示区通过Blending(硬件混淆)自动显示在屏幕上.在软件部分我们无需关心叠加的

《精通Android 5 多媒体开发》——第6章,第6.2节分析硬件抽象层

6.2 分析硬件抽象层精通Android 5 多媒体开发Overlay系统的硬件抽象层是一个硬件模块.在本节的内容中,将简要介绍Overlay系统的硬件抽象层的基本知识,为后面的知识做好铺垫. 6.2.1 Overlay系统硬件抽象层的接口在如下文件中定义Overlay系统硬件抽象层的接口. hardware/qcom/display/liboverlay/overlay.h在文件overlay.h中,主要定义了data device和control device两个结构.并提供针对data d

《精通Android 5 多媒体开发》——第6章,第6.3节实现Overlay硬件抽象层

6.3 实现Overlay硬件抽象层精通Android 5 多媒体开发在前面的内容中,了解了Overlay系统的基本知识和硬件抽象层的原理.在接下来的内容中,将详细讲解实现Overlay硬件抽象层的框架的基本知识,为进入本书后面知识的学习打下基础. 在Android系统中,提供了一个Overlay硬件抽象层的框架实现,在里面有完整的实现代码,我们可以将其作为使用Overlay硬件抽象层的方法.但是在里面没有使用具体硬件,所以不会有实际的现实效果.上述框架实现的的源码目录如下所示. hardwar

《Java和Android开发实战详解》——2.1节如何构建应用程序

2.1 如何构建应用程序 Java和Android开发实战详解 一般来说,我们使用Java程序语言的目的,就是编写程序代码构建应用程序,以期让计算机执行来解决问题. 2.1.1 如何编写程序代码 程序设计(Programming)很困难吗?事实上,如果你可以引导问路人到达目的地.走迷宫或开车到你家,一步一步详细列出活动流程,就表示你一定可以编写程序代码.不过,在列流程时请注意!计算机一点都不聪明,也不会举一反三,所以,我们需要告诉计算机详细的步骤和信息,不能只有模棱两可的内容. 例如,在北京开车