Android 屏幕保护程序制作及源码

首先,需要启动一个后台服务,用于注册一个BroadcastReceiver

这个BroadcastReceiver用于监听Intent.ACTION_SCREEN_OFF

这样在发生这个事件Intent.ACTION_SCREEN_OFF 也就是用户锁屏或者屏幕上锁时触发。

Service中注册BroadcastReceiver代码

package com.pingbao; import android.app.KeyguardManager; import android.app.Service; import android.app.KeyguardManager.KeyguardLock; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.util.Log; public class ZyScreenService extends Service { KeyguardManager mKeyguardManager = null; private KeyguardLock mKeyguardLock = null; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); } @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub Log.i("in Service","in Service"); mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); mKeyguardLock = mKeyguardManager.newKeyguardLock(""); mKeyguardLock.disableKeyguard(); Log.i("in Service1","in Service1"); 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, ZyScreenSaver.class); context.startActivity(i); // finish(); Log.i("BroadcastReceiver","BroadcastReceiver"); } catch (Exception e) { Log.i("Output:", e.toString()); } } }; registerReceiver(mMasterResetReciever, new IntentFilter( Intent.ACTION_SCREEN_OFF)); } }

然后在我们启动的ZyScreenSaver这个屏保界面Activity里写上

package com.pingbao; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.Window; import android.view.WindowManager; import android.widget.ArrayAdapter; public class ZyScreenSaver extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); Log.i("MyScreenSaver", "MyScreenSaver"); } public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); if (keyCode == KeyEvent.KEYCODE_BACK) { Log.i("4", "4"); showDialog(1); } // finish(); return true; } protected Dialog onCreateDialog(int id) { switch (id) { case 1: return new AlertDialog.Builder(ZyScreenSaver.this).setIcon( R.drawable.icon).setTitle("退出屏保").setMessage( "是否退出屏保").setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub finish(); } }) .setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub removeDialog(1); } }) .create(); } return null; } }

然后在我们的主界面里写上启动服务就可以了

package com.pingbao; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Window; import android.view.WindowManager; public class Zypingbao extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("pingbao","pingbao"); Intent mService=new Intent(Zypingbao.this,ZyScreenService.class);//启动服务 mService.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startService(mService); } }

在Manifest里贴权限

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

源码下载

http://download.csdn.net/source/2996510

本博客版权归CSDN博主曾阳所有

http://blog.csdn.net/Zengyangtech/archive/2011/01/21/6157508.aspx

转载请注明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值