package wh.VirtualGuard;
import java.util.ArrayList;
import java.util.List;
import wh.VirtualGuard.AlertSender.AlertSender;
import wh.VirtualGuard.AlertSender.GPSSender;
import wh.VirtualGuard.AlertSender.PhoneSender;
import wh.VirtualGuard.AlertTrigger.CollisionRecognizeTrigger;
import wh.VirtualGuard.AlertTrigger.IntentTrigger;
import wh.VirtualGuard.AlgorithmUnits.CollisionRecognizeAlgorithmUnits.ComplexCollisionRecognizeAlgorithm;
import wh.VirtualGuard.AlgorithmUnits.CollisionRecognizeAlgorithmUnits.SimpleCollisionRecognizeAlgorithm;
import wh.VirtualGuard.GuardFramwork.GuardFramwork;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.preference.PreferenceManager.OnActivityResultListener;
import android.util.Log;
import android.widget.Toast;
public class MonitoringService extends Service implements OnActivityResultListener{
private GuardFramwork guardFramwork;
private CollisionRecognizeTrigger collisionRecognizeTrigger;
private PhoneSender phoneSender;
private GPSSender gpsSender;
private IntentTrigger voiceIntentTrigger;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startId){
// TODO Auto-generated method stub
super.onStart(intent, startId);
String phoneNumber=intent.getStringExtra("phoneNumber");
int intervalTime=intent.getIntExtra("intervalTime", 1000);
boolean voiceRecognizeEnable=intent.getBooleanExtra("voiceRecognize", false);
boolean collisionRecognizeEnable=intent.getBooleanExtra("collisionRecognize", false);
boolean telephoneEnable=intent.getBooleanExtra("telephoneEnable", false);
boolean gpsEnable=intent.getBooleanExtra("gpsEnable", false);
if (phoneNumber==null || intervalTime<200 || intervalTime>5000){
Toast.makeText(this, "Input Error,phoneNumber shouldn't be null, and intervalTime must between 200 and 5000.", Toast.LENGTH_LONG).show();
Log.e("MonitoringService", "Input Error");
return;
}
setForeground(true);
guardFramwork=GuardFramwork.getInstance();
guardFramwork.setIntervalTime(1000);
List<AlertSender> alertSenderList=new ArrayList<AlertSender>();
if (telephoneEnable)
{
phoneSender=new PhoneSender(this,phoneNumber);
alertSenderList.add(phoneSender);
}
if(gpsEnable)
{
gpsSender=new GPSSender(this);
alertSenderList.add(gpsSender);
}
if(voiceRecognizeEnable)
{
voiceIntentTrigger=new IntentTrigger(this, "VoiceRecognizeTrigger");
guardFramwork.addTrigger(voiceIntentTrigger, alertSenderList);
}
if (collisionRecognizeEnable)
{
ComplexCollisionRecognizeAlgorithm complexCollisionRecognizeAlgorithm=new ComplexCollisionRecognizeAlgorithm();
collisionRecognizeTrigger=new CollisionRecognizeTrigger(this,complexCollisionRecognizeAlgorithm);
guardFramwork.addTrigger(collisionRecognizeTrigger, alertSenderList);
}
guardFramwork.startMonitoring();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
guardFramwork.stopMonitoring();
super.onDestroy();
}
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
return false;
}
}
|