package org.iilab.pb.trigger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.util.Log;
import org.iilab.pb.alert.PanicAlert;
import static android.content.Intent.ACTION_SCREEN_OFF;
import static android.content.Intent.ACTION_SCREEN_ON;
public class HardwareTriggerReceiver extends BroadcastReceiver {
private static final String TAG = HardwareTriggerReceiver.class.getName();
// private MultiClickEvent multiClickEvent;
protected MultiClickEvent multiClickEvent;
public HardwareTriggerReceiver() {
resetEvent();
}
@Override
public void onReceive(Context context, Intent intent) {
Log.e(">>>>>>>", "in onReceive of HWReceiver");
String action = intent.getAction();
if (!isCallActive(context) && (action.equals(ACTION_SCREEN_OFF) || action.equals(ACTION_SCREEN_ON))) {
multiClickEvent.registerClick(System.currentTimeMillis());
if(multiClickEvent.skipCurrentClick()){
Log.e("*****", "skipped click");
multiClickEvent.resetSkipCurrentClickFlag();
}
else if(multiClickEvent.canStartVibration()){
Log.e("*****", "vibration started");
PanicAlert panicAlert = getPanicAlert(context);
panicAlert.vibrate();
}
else if (multiClickEvent.isActivated()) {
Log.e("*****", "alerts activated");
onActivation(context);
resetEvent();
}
}
}
protected void onActivation(Context context) {
Log.e(">>>>>>>", "in onActivation of HWReceiver");
activateAlert(getPanicAlert(context));
}
void activateAlert(PanicAlert panicAlert) {
// panicAlert.start();
panicAlert.activate();
}
protected void resetEvent() {
multiClickEvent = new MultiClickEvent();
}
protected PanicAlert getPanicAlert(Context context) {
return new PanicAlert(context);
}
private boolean isCallActive(Context context) {
AudioManager manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
return manager.getMode() == AudioManager.MODE_IN_CALL;
}
}