package com.dappervision.wearscript.managers; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import com.dappervision.wearscript.BackgroundService; import com.dappervision.wearscript.events.CallbackRegistration; public class EyeManager extends Manager { private static final String ACTION_ON_HEAD_STATE_CHANGED = "com.google.android.glass.action.ON_HEAD_STATE_CHANGED"; private boolean isSetup; public EyeManager(BackgroundService bs) { super(bs); isSetup = false; reset(); } public void onEvent(CallbackRegistration r) { if (r.getManager().equals(this.getClass()) && !isSetup) { setup(); isSetup = true; } super.onEvent(r); } private void teardown() { if (!isSetup) return; isSetup = false; } private void setup() { if (isSetup) return; IntentFilter eyeFilter = new IntentFilter(ACTION_ON_HEAD_STATE_CHANGED); service.getApplicationContext().registerReceiver(new OnHeadChangedReceiver(this), eyeFilter); } @Override public void shutdown() { super.shutdown(); teardown(); } @Override public void reset() { super.reset(); teardown(); } } class OnHeadChangedReceiver extends BroadcastReceiver { private static final String EXTRA_IS_ON_HEAD = "is_on_head"; private final Manager mParent; OnHeadChangedReceiver(Manager parent){ mParent = parent; } @Override public void onReceive(Context context, Intent intent) { boolean onHead = intent.getBooleanExtra(EXTRA_IS_ON_HEAD, false); mParent.makeCall("onHead", onHead ? "true" : "false"); } }