2014年3月24日 星期一

Android 開發 (三十四) Geofence

甚麼是Geofence?

當使用者進入或離開某個目標範圍時,我可以對該使用者做特定事情,例如: 在兒童手機安裝監視app,當兒童帶著手機離開某個區域時我可以發訊息通知父母。或者是在老闆手機裡面偷裝app,當老闆進到公司範圍時會跟部門所有人發通知 XD

geofence是 location service 所以要使用geofence就必須安裝google play service apk可以使用
GooglePlayServicesUtil.isGooglePlayServicesAvailable() 來判斷是否有安裝
至於該如何使用geofence
 mLocationClient.addGeofences(
                        mCurrentGeofences, pendingIntent, this);
如上的指令,其中pendingIntent為當事件發生時要做何反應,例如發broadcast,或者是開activity
如下有指令的介紹
至於mCurrentGeofences可以使用Geofence.Builder來創造

在這邊值得注意的是,我一直以為geofence一旦被註冊之後就會不斷的被觸發,直到我取消,
但是在實作之後發現,該pendingintent只會被觸發一次之後就不再觸發,也就是說,假設我今天想要做一個背景監視使用者是否有進入或離開某個範圍的app,當使用者第一次進入該範圍之後,我就再也無法監聽到使用者之後的行為,除非我再一次的註冊geofence。

所以想要達到上面的功能,就必須在每次geofence被觸發之後,重新connect locationclient,並且重新註冊geofence,但是如果不斷的註冊geofence並且觸發,這又會對電池造成極大的負擔,要如何達到平衡,這就必須經過多方討論取捨才能得到結果了。

沒有留言:

張貼留言