package com.android.Woori;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker.OnTimeChangedListener;
public class NotificationMain extends Activity implements OnClickListener,
OnDateChangedListener, OnTimeChangedListener{
private EditText tickerText;
private EditText contentTitle;
private EditText contentText;
private Button registerButton, cancelButton;
private NotificationManager nm;
private GregorianCalendar mCalendar;
private DatePicker mDate;
//시작 설정 클래스
private TimePicker mTime;
public int number;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notification_main);
tickerText = (EditText)findViewById(R.id.tickerText);
contentTitle = (EditText)findViewById(R.id.contentTitle);
contentText = (EditText)findViewById(R.id.contentText);
registerButton = (Button)findViewById(R.id.OkBtn);
cancelButton = (Button)findViewById(R.id.CancelBtn);
registerButton.setOnClickListener(this);
cancelButton.setOnClickListener(this);
mCalendar = new GregorianCalendar();
Log.i("HelloAlarmActivity",mCalendar.getTime().toString());
mDate = (DatePicker)findViewById(R.id.date_picker);
mDate.init (mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this);
mTime = (TimePicker)findViewById(R.id.time_picker);
mTime.setCurrentHour(mCalendar.get(Calendar.HOUR_OF_DAY));
mTime.setCurrentMinute(mCalendar.get(Calendar.MINUTE));
mTime.setOnTimeChangedListener(this);
}
public void onClick(View v) {
switch(v.getId()){
case R.id.OkBtn:
// Notification 서비스
// Notification 매니져 객체 생성
nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
// NOtificaiton과 동시에 실행할 activity를 지정한다.
PendingIntent intent = PendingIntent.getActivity(
NotificationMain.this, 0,
new Intent(NotificationMain.this, NotificationMessage.class), 0);
// Title과 Text값 받아옴
String ticker = tickerText.getText().toString();
String title = contentTitle.getText().toString();
String text = contentText.getText().toString();
long when = mCalendar.getTimeInMillis(); <-- 스피너로 지정한 시간
// Notification 객체 생성
Notification notification =
new Notification(R.drawable.icon,
ticker, when); //현재 시간 보여줌
number++;
// NOtification에 표시될 항목 설정
notification.setLatestEventInfo(NotificationMain.this,
title, text, intent);
nm.notify(number, notification); //알림을 핸들링할 고유ID생성
Toast.makeText(NotificationMain.this, "등록되었습니다.",
Toast.LENGTH_SHORT).show();
case R.id.cancelBtn :
break;
}
}
//일자 설정 클래스의 상태변화 리스너
public void onDateChanged (DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendar.set (year, monthOfYear, dayOfMonth, mTime.getCurrentHour(), mTime.getCurrentMinute());
Log.i("HelloAlarmActivity", mCalendar.getTime().toString());
}
//시각 설정 클래스의 상태변화 리스너
public void onTimeChanged (TimePicker view, int hourOfDay, int minute) {
mCalendar.set (mDate.getYear(), mDate.getMonth(), mDate.getDayOfMonth(), hourOfDay, minute);
Log.i("HelloAlarmActivity",mCalendar.getTime().toString());
}
}
올려주신 소스를 이용해서 원하는 시간대에 알림을 받을 수 있도록 수정을 하였습니다.
에러는 나지 않는데 Spinner을 이용해서 지정한 시간대에 알림을 받아야되는데
알림은 바로 받으면서 표시시간만 Spinner에서 지정한 시간으로 표시만 됩니다.
어떻게 해야 원하는 시간대에 알림을 받을 수 있을지 알고 싶습니다. ㅠㅠ