Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 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;
 }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved