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에서 지정한 시간으로 표시만 됩니다.

 

어떻게 해야 원하는 시간대에 알림을 받을 수 있을지 알고 싶습니다. ㅠㅠ