Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 監聽開機廣播啟動服務 動態注冊時間變化監聽廣播

Android 監聽開機廣播啟動服務 動態注冊時間變化監聽廣播

編輯:關於Android編程

開機廣播權限

 

開機廣播 注冊

 

            
        
開機廣播

 

 

public class BootedReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		context.startService(new Intent(context, TimeService.class));
	}

}
時間服務

 

 

//服務 用於  注冊 監聽時間變化、設置的廣播   時間變化廣播只能動態注冊
public class TimeService extends Service {
	
	//監聽時間變化的 這個receiver只能動態創建
	private TimeTickReceiver mTickReceiver;
	private IntentFilter mFilter;

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
	
	@Override
	public void onCreate() {
		super.onCreate();
		mFilter = new IntentFilter();
		mFilter.addAction(Intent.ACTION_TIME_TICK); //每分鐘變化的action
		mFilter.addAction(Intent.ACTION_TIME_CHANGED); //設置了系統時間的action
		mTickReceiver = new TimeTickReceiver();
		registerReceiver(mTickReceiver, mFilter); 
	}
	
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		System.out.println(啟動了服務);
		return Service.START_STICKY;
	}
	
	@Override
	public void onDestroy() {
		super.onDestroy();
		unregisterReceiver(mTickReceiver);
	}
}

監聽時間改變、設置 廣播

 

 

public class TimeTickReceiver extends BroadcastReceiver {
	
	private boolean flag;

	@Override
	public void onReceive(Context context, Intent intent) {
//		System.out.println(時間變了 + intent.getAction());

		if (intent.getAction().equals(Intent.ACTION_TIME_TICK)) {
			 	//每過一分鐘 觸發
			} 
			
		} else {
			/*
			 * 系統bug??
			 * android.intent.action.TIME_SET  當調整系統時間後 這個action會收到兩次
			 */
			if (flag) {
				try {
					/*  do some thing */
				} catch (Exception e) {
					e.printStackTrace();
				}
				flag = false; //第二次置false
			} else {
				flag = true; //第一次置true
			}
			
		}
		
	
		
	}

}


 

 

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