/*
Copyright 2010 Cesar Valiente Gordo
This file is part of QuiteSleep.
QuiteSleep 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.
QuiteSleep 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 QuiteSleep. If not, see <http://www.gnu.org/licenses/>.
*/
package es.cesar.quitesleep.ui.notifications;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import es.cesar.quitesleep.R;
import es.cesar.quitesleep.application.QuiteSleepApp;
import es.cesar.quitesleep.settings.ConfigAppValues;
import es.cesar.quitesleep.ui.activities.Main;
import es.cesar.quitesleep.utils.ExceptionUtils;
import es.cesar.quitesleep.utils.Log;
/**
*
* @author Cesar Valiente Gordo
* @mail cesar.valiente@gmail.com
*
*/
public class QuiteSleepNotification {
private final static String CLASS_NAME = "es.cesar.quitesleep.notifications.QuiteSleepNotification";
//Notification
private static NotificationManager notificationManager = null;
final private static int notificationId = R.layout.quitesleep_notification;
/**
* Create the intent that is used when the user touch the QuiteSleep
* notification, and then go to the Main class application.
*
* @return the PendingIntent
* @see PendingIntent
*/
private static PendingIntent notificationIntent (Context context) {
// The PendingIntent to launch our activity if the user selects this
// notification. Note the use of FLAG_UPDATE_CURRENT so that if there
// is already an active matching pending intent, we will update its
// extras to be the ones passed in here.
PendingIntent contentIntent = PendingIntent.getActivity(
context,
0,
new Intent(
context,
Main.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
PendingIntent.FLAG_UPDATE_CURRENT);
return contentIntent;
}
/**
* Show the QuiteSleep service running notification. If is the stop
* action, cancel the notification and hide.
*/
public static void showNotification (Context context, boolean showNotification) {
try {
if (showNotification) {
//Get the notification manager service
if (notificationManager == null)
notificationManager =
(NotificationManager)context.
getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence title = context.getText(R.string.app_name);
CharSequence message;
message = QuiteSleepApp.getContext().getText(
R.string.quitesleep_notification_start_message);
Notification notification = new Notification(
R.drawable.quitesleep_statusbar,
message,
System.currentTimeMillis());
notification.setLatestEventInfo(
context,
title,
message,
notificationIntent(context));
/* For the led flash custom
notification.ledARGB = 0xff00ff00;
notification.ledOnMS = 300;
notification.ledOffMS = 1000;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
*/
notificationManager.notify(notificationId, notification);
}else if (notificationManager != null){
Log.d(CLASS_NAME, "notification canceled");
notificationManager.cancel(notificationId);
}
}catch (Exception e) {
Log.e(CLASS_NAME, ExceptionUtils.getString(e));
}
}
}