Android 螢幕保護裝置程式製作及源碼

來源:互聯網
上載者:User

首先,需要啟動一個後台服務,用於註冊一個BroadcastReceiver

 

這個BroadcastReceiver用於監聽Intent.ACTION_SCREEN_OFF

 

這樣在發生這個事件Intent.ACTION_SCREEN_OFF 也就是使用者鎖屏或者螢幕上鎖時觸發。

 

Service中註冊BroadcastReceiver代碼

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

 

然後在我們啟動的ZyScreenSaver這個屏保介面Activity裡寫上

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

 

然後在我們的主介面裡寫上啟動服務就可以了

 

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

 

在Manifest裡貼許可權

 

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

 

源碼下載

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

 

 

如果實在要屏蔽home鍵 還有一種辦法 就是

public void onAttachedToWindow() {<br />this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);<br />super.onAttachedToWindow();<br />} 

這樣在

public boolean onKeyDown(int keyCode, KeyEvent event)

函數裡就能監聽到home了

 

本部落格著作權歸CSDN博主曾陽所有

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

轉載請註明

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.