Я пытаюсь сделать приложение для запуска уведомлений в определенное время.Конкретное время я вычисляю с помощью очень сложного кода, но это не имеет значения.
Для каждого дня время уведомления отличается, например:
12/01/12 |13.01.12 |14/01/12
n1: 02: 00 |n1: 02: 05 |n1: 02: 06
n2: 07: 00 |N2: 07: 08 |...
n3: 12: 00 |n3: 12: 02 |...
n4: 14: 00 |n4: 13: 59 |...
n5: 20: 00 |n5: 20: 01 |...
Я создал два метода в классе Activity для запуска уведомления в определенное время:
private void createNotification(final String contentTitle, final String contentText,
final String tickerText) {
calculateTimes();
setFirstMillis(getNextTime());
createStatusBarNotification(contentTitle, contentText, tickerText);
Notification note = new Notification(android.R.drawable.btn_star_big_on, tickerText, System.currentTimeMillis());
PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, VakActivity.class), 0);
note.setLatestEventInfo(this, contentTitle, contentText, intent);
note.vibrate = new long[]{1000,1000,1000,1000,1000};
note.defaults |= Notification.DEFAULT_LIGHTS;
note.sound = Uri.parse(getAlarmTone());
note.flags |= Notification.FLAG_AUTO_CANCEL;
note.flags |= Notification.FLAG_INSISTENT;
notificationManager.notify(NOTIF_ID, note);
}
private void createStatusBarNotification(final String contentTitle,
final String contentText, final String tickerText) {
Date date = new Date(getFirstMillis());
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
createNotification(contentTitle, contentText, tickerText);
}
};
timer.schedule(timerTask, date);
}
Я запустил метод createStatusBarNotification в:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
...
...
createStatusBarNotification("Title", "Text",
"tickerText");
}
Но я хочу запустить это уведомление как службу.
Я пытаюсь создать новый класс
public class StartNotificationService extends Service
Но я не знаю, что мне нужно написать в этом классе и как, когда иЗапустите этот класс.
Обновление:
Я создал новый метод в Activity, который я вызвал из метода onCreate
public void setOneTimeAlarm() {
Intent intent = new Intent(this, StartNotificationService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, PendingIntent.FLAG_ONE_SHOT);
am.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + (5 * 1000), pendingIntent);
}
Класс StartNotificationService:
public class StartNotificationService extends BroadcastReceiver {
private static final int NOTIF_ID = 1234;
private Pror pror;
private Context cntx;
private NotificationManager notificationManager;
@Override
public void onReceive(Context context, Intent intent) {
cntx = context;
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
createStatusBarNotification("Title", "Text",
"tickerText");
}
private void createStatusBarNotification(final String contentTitle,
final String contentText, final String tickerText) {
Date date = new Date(pror.getFirstMillis());
Log.i("date", date.toString());
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
createNotification(contentTitle, contentText, tickerText);
}
};
timer.schedule(timerTask, date);
}
private void createNotification(final String contentTitle, final String contentText,
final String tickerText) {
pror.calculateVak();
pror.setFirstMillis(pror.getNextVak());
createStatusBarNotification(contentTitle, contentText, tickerText);
Notification note = new Notification(android.R.drawable.btn_star_big_on, tickerText, System.currentTimeMillis());
PendingIntent intent = PendingIntent.getActivity(cntx, 0, new Intent(cntx, VakActivity.class), 0);
note.setLatestEventInfo(cntx, contentTitle, contentText, intent);
note.vibrate = new long[]{1000,1000,1000,1000,1000};
note.defaults |= Notification.DEFAULT_LIGHTS;
note.sound = Uri.parse(pror.getAlarmTone());
note.flags |= Notification.FLAG_AUTO_CANCEL;
note.flags |= Notification.FLAG_INSISTENT;
notificationManager.notify(NOTIF_ID, note);
}
}
Я хочу отправить переменную из Activity в StartNotificationService.Как я могу это сделать?
Проблема в переменной Pror.Эту переменную я задаю в Activity (читай настройки, ...) и хочу, чтобы этот экземпляр в классе StartNotificationService имел значение.