Monday, 14 May 2012

service


package com.BirthdayWisherFinal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;

import android.app.Activity;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.os.IBinder;
import android.telephony.SmsManager;
import android.util.Log;
import android.widget.Toast;

public class MessageService extends Service{
    DBBirthday db;
    DBMessage dbmsg;
    String curDate;
    String data;
    Vector<String> vectName;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        //Log.v("Birthday Wisher", "Messaging service called");
    }
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub       
        return null;
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        Log.v("Birthday Wisher", "Messaging service called");
        getBirthdateData();

        String msgsend = getmessage();
       
        int totalElements = vectName.size();
        if (totalElements > 0) {
            for (int index = 0; index < totalElements; index++) {
                //Log.v("Birthday Wisher", vectName.get(index));
                data = vectName.get(index);
                String[] dataSplit = data.split(":");
                //Log.v("Birthday Wisher", dataSplit[1]+ " "+dataSplit[3] );

                if (dataSplit[3].equals("blank")) {
                    if(!(msgsend == null || msgsend.length() == 0)){
                        sendSMS(dataSplit[1], msgsend);
                    }
                } else {
                    sendSMS(dataSplit[1], dataSplit[3]);
                }
            }
        }
        return super.onStartCommand(intent, flags, startId);       
    }

/// to get message from template table
protected String getmessage() {
    String messagetemp=null;
    dbmsg = new DBMessage(getApplicationContext());
    dbmsg.open();
    Cursor cs = dbmsg.getMessage();
    if (!(cs.getCount() == 0)) {
        if (cs.moveToFirst()) {
            do {
                messagetemp = cs.getString(1);
                return messagetemp;
            } while (cs.moveToNext());
        }
    }
    cs.close();
    dbmsg.close();
    return messagetemp;
}
public void getBirthdateData() {

    // to get the current date
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");

    String dt = sdf.format(new Date());
    Toast.makeText(getApplicationContext(), "Current date " + dt,
            Toast.LENGTH_LONG).show();

    // get value from database
    db = new DBBirthday(this);
    vectName = new Vector<String>();
    db.open();
    Cursor c = db.getBirthdayContacts();
    if (c.getCount() == 0) {
        Toast.makeText(getApplicationContext(),
                Integer.toString(c.getCount()) + " Records found",
                Toast.LENGTH_SHORT).show();
        return;
    } else {
        if (c.moveToFirst()) {
            do {
                /*
                 * vector will store data whose birth date will match
                 * current date in the format [
                 * name:contact:birthdate:message ]
                 */
                String birthDate = c.getString(3);
                Toast.makeText(getApplicationContext(),
                        "Birthdate " + " " + birthDate, Toast.LENGTH_SHORT)
                        .show();
                if (dt.equals(birthDate)) {
                   
                    if (c.getString(6).length() == 0) {
                        vectName.addElement(c.getString(1) + ":"
                                + c.getString(2) + ":" + c.getString(3)
                                + ":" + "blank");
                    } else {
                        vectName.addElement(c.getString(1) + ":"
                                + c.getString(2) + ":" + c.getString(3)
                                + ":" + c.getString(6));
                    }
                    Toast.makeText(getApplicationContext(),
                            "element added", Toast.LENGTH_SHORT).show();
                }
            } while (c.moveToNext());
        }
        c.close();
    }
    db.close();
}
private void sendSMS(String phoneNumber, String message)
{       
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
        new Intent(SENT), 0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), 0);

    //registerReceiver(receiver, filter)
    //---when the SMS has been sent---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS sent",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(), "Generic failure",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(), "No service",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(), "Null PDU",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(getBaseContext(), "Radio off",
                            Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    }, new IntentFilter(SENT));

    //---when the SMS has been delivered---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered",
                            Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered",
                            Toast.LENGTH_SHORT).show();
                    break;                       
            }
        }
    }, new IntentFilter(DELIVERED));       
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
}

}

No comments:

Post a Comment