package com.tilab.ca.android.lcb.sensor; import android.app.Service; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.IBinder; import android.os.Looper; import android.os.RemoteException; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; public class CallSensorService extends Service { public final static String NAME = "CallSensorService"; public final static String VERSION = "0.1"; private TelephonyManager tm; private final static String AVAILABLE_SCOPES = "CallScope"; private boolean canTrigger = false; private long lastIterationReceived = System.currentTimeMillis(); private long lastReceived = -1; //private long lngTMP =0 private final static String DEBUG_TAG = NAME; private callListener cl=null; @Override public IBinder onBind(Intent intent) { Log.d(DEBUG_TAG, "onBind() : ACTION = " + intent.getAction()); return mBinder; } /** * The IRemoteInterface is defined through IDL */ private final ILCBSensorService.Stub mBinder = new ILCBSensorService.Stub() { public String getContext(String scopeList) throws RemoteException { // TODO Auto-generated method stub Log.d("DEBUG","AAA CHIAMATA LA GET CONTEXT"); if(lastReceived == -1){ lastReceived = System.currentTimeMillis(); } //intTMP=lastreceived milliToDate mtd = new milliToDate(); long received; try{ Uri uri = Uri.parse("content://sms/sent"); Cursor cursor = getContentResolver().query(uri, null, null,null,null); cursor.moveToNext(); do { int nameColumn =cursor.getColumnIndex("address"); try{ received = cursor.getLong(4); if(receivedlastIterationReceived){ String phoneNumberValue = cursor.getString(nameColumn); String date = mtd.convert(cursor.getLong(4)); Log.d("SMS INVIATO","NUMERO: " + "AAA " + phoneNumberValue + " Data: " +date); } else{ lastIterationReceived=lastReceived; break; } }catch(Exception e){ Log.e("LIST","AAA " + "No messages"); } }while (cursor.moveToNext()); }catch(Exception e){ e.printStackTrace(); } try{ return MyReceiver.getResults(); }catch(Exception e){ return ""; } /* ContextElement ce = new ContextElement("dummyScope"); ce.addPar("dummyPar", "i-am-a-dummy-value"); ParS pars = new ParS("dummyPars"); pars.addPar("dummypars-key1", "dummypars-value1"); pars.addPar("dummypars-key2", "dummypars-value2"); ce.addParS(pars); ParA para = new ParA("dummyParas"); para.addPar("dummypara", "dummypara1"); para.addPar("dummypara", "dummypara2"); para.addPar("dummypara", "dummypara3"); ce.addParA(para);*/ } public String getName() throws RemoteException { return NAME; } public String getVersion() throws RemoteException { return VERSION; } public boolean canTrigger() throws RemoteException { return canTrigger; } public String getAvailableScopes() throws RemoteException { return AVAILABLE_SCOPES; } public boolean ping() throws RemoteException { // TODO Auto-generated method stub return true; } public void setCanTrigger(boolean value) throws RemoteException { canTrigger = value; } public boolean start() throws RemoteException { Log.d(DEBUG_TAG, "start()"); Looper.prepare(); //??? return true; } public void stop() throws RemoteException { tm.listen(cl,PhoneStateListener.LISTEN_NONE); } public String getLog() throws RemoteException { // TODO Auto-generated method stub return ""; } public String init() throws RemoteException { // TODO Auto-generated method stub return ""; } public void setConfigParameter(String parameterName, String value) throws RemoteException { // TODO Auto-generated method stub } }; }