StartStopReminderReceiver.java :  » App » vanbus » org » niclab » vanbus » reminder » Android Open Source

Android Open Source » App » vanbus 
vanbus » org » niclab » vanbus » reminder » StartStopReminderReceiver.java
/*******************************************************************************
 * Copyright (c) 2010 liw.
 * All rights reserved. 
 * 
 * This file is part of VanBus.
 * 
 *     VanBus is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 * 
 *     VanBus is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 * 
 *     You should have received a copy of the GNU General Public License
 *     along with VanBus.  If not, see <http://www.gnu.org/licenses/>.
 * Contributors:
 *     liw - initial API and implementation
 ******************************************************************************/
package org.niclab.vanbus.reminder;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Random;

import org.niclab.vanbus.R;
import org.niclab.vanbus.activity.comp.StartStopReminderDialog;
import org.niclab.vanbus.activity.controller.BusStopController;
import org.niclab.vanbus.activity.controller.ReminderController;
import org.niclab.vanbus.database.ApplicationDataBase;
import org.niclab.vanbus.database.ReminderDAO;
import org.niclab.vanbus.model.Reminder.ReminderType;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.RemoteViews;

public class StartStopReminderReceiver extends BroadcastReceiver{
  
  private static final String LOG_TAG="StartStopReminderReceiver";
  //private static final int START_STOP_NOTIFICATION= 1;
  

  @Override
  public void onReceive(Context context, Intent intent) {
    Log.d(LOG_TAG,"received an alarm broadcast");
    ArrayList<String> times = intent.getStringArrayListExtra(ReminderController.REMINDER_START_STOP_ALARM_INTENT_KEY_BUS_TIMES);
    String stopName = intent.getStringExtra(ReminderController.REMINDER_START_STOP_ALARM_INTENT_KEY_BUS_STOP_NAME);
    String stopId = intent.getStringExtra(ReminderController.REMINDER_START_STOP_ALARM_INTENT_KEY_BUS_STOP_ID);
    String routeId = intent.getStringExtra(ReminderController.REMINDER_START_STOP_ALARM_INTENT_KEY_ROUTE_ID);
    
    Log.v(LOG_TAG,"start stop alarm: stopName:" +stopName + "stopId: "+stopId + " routeId: "+routeId+" Times: "+ times.toString());
    
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    
    int icon = R.drawable.bus;
    CharSequence tickerText = "Catch Bus!";
    long when = System.currentTimeMillis();         // notification time
    
    
    Notification notification = new Notification(icon, tickerText,when);
    notification.defaults |=Notification.DEFAULT_VIBRATE;
    notification.defaults |=Notification.DEFAULT_SOUND;
    
    notification.flags |= Notification.FLAG_INSISTENT;
    RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.reminder_start_stop_notification);
    contentView.setImageViewResource(R.id.reminder_notification_start_stop_img, R.drawable.bus);
    
    String timeText = new SimpleDateFormat("hh:mm a").format(new Date(when));
    contentView.setTextViewText(R.id.reminder_notification_start_stop_time, timeText);
    
    CharSequence contentText ="Next bus is coming to " +stopName+" at "+ times.toString(); 
    contentView.setTextViewText(R.id.reminder_notification_start_stop_message, contentText);
  
    
    CharSequence contentTitle="Time to catch your bus "+routeId;  // expanded message title
    contentView.setTextViewText(R.id.reminder_notification_start_stop_title, contentTitle);

    notification.contentView = contentView;
    

    
    
    Intent notificationIntent = new Intent();
    
    PendingIntent contentIntent = PendingIntent.getBroadcast(context, 0, notificationIntent, 0);

    notification.contentIntent = contentIntent;

    mNotificationManager.notify(new Random().nextInt(), notification);
    
    //remove the reminder from database
    ReminderController reminderCtr = new ReminderController(context);

    Log.v(LOG_TAG,"the Reminder_ID of the reminder to remove:" + intent.getData().getLastPathSegment());
    reminderCtr.deleteReminderByIdFromDB(ReminderType.StartStopReminder, intent.getData().getLastPathSegment());

    

  }
  

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.