2014-02-22 1 views
0

나는 하나의 알람 만 설정하고 삭제할 수있는 alarmmanager를 만들고 싶다.나는 경보 관리자를 만들고 싶다 ... 어느 누구도 특정 코드를 알려 주실 수 있습니까?

여기 내 코드입니다. 그것은 작동하지 않습니다. 실제로 알람을 설정하면 알람이 설정되었음을 보여줍니다. 그러나 알림이나 응답을 제공하지 않습니다 ... 한 번에 하나의 알람 만 설정하고 삭제하고 싶습니다. 무엇을할까요? 나는 여기에서 바꿀 필요가있다. 누군가 pls를 도와 줄 수 있느냐 ???? ???? ????

이것은 내 주요 수업입니다. 나는 데이터베이스라는 두 개의 클래스를 가지고있다. AlarmReceiver

public class MainActivity extends Activity { 

TimePicker myTimePicker; 
Button buttonstartSetDialog; 
TextView textAlarmPrompt; 
int i=0; 
TimePickerDialog timePickerDialog; 
String show=""; 
int RQS_1; 
PendingIntent pendingIntent; 
AlarmManager alarmManager; 
String minute,hour,purpose; 
TextView test; 

EditText et1; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    textAlarmPrompt = (TextView)findViewById(R.id.alarmprompt); 
    et1 = (EditText)findViewById(R.id.txtPurpose); 
    test = (TextView)findViewById(R.id.textView1); 
    buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog); 
    buttonstartSetDialog.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      textAlarmPrompt.setText(""); 
      openTimePickerDialog(false); 

     }}); 

} 


private void openTimePickerDialog(boolean is24r){ 
    Calendar calendar = Calendar.getInstance(); 

    timePickerDialog = new TimePickerDialog(
      MainActivity.this, 
      onTimeSetListener, 
      calendar.get(Calendar.HOUR_OF_DAY), 
      calendar.get(Calendar.MINUTE), 
      is24r); 
      purpose = et1.getText().toString(); 
      hour = Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)); 
      minute = Integer.toString(calendar.get(Calendar.MINUTE)); 

      /*database ob1 = new database(this); 

      ob1.Open(); 
      ob1.insert(purpose, hour, minute); 
      ob1.Close();*/ 
    timePickerDialog.setTitle("Set Alarm Time"); 

    timePickerDialog.show(); 

} 

OnTimeSetListener onTimeSetListener 
= new OnTimeSetListener(){ 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

     Calendar calNow = Calendar.getInstance(); 
     Calendar calSet = (Calendar) calNow.clone(); 

     calSet.set(Calendar.HOUR_OF_DAY, hourOfDay); 
     calSet.set(Calendar.MINUTE, minute); 
     calSet.set(Calendar.SECOND, 0); 
     calSet.set(Calendar.MILLISECOND, 0); 

     if(calSet.compareTo(calNow) <= 0){ 
      //Today Set time passed, count to tomorrow 
      calSet.add(Calendar.DATE, 1); 
     } 

     setAlarm(calSet); 
    }}; 

private void setAlarm(Calendar targetCal){ 




    show = show + "\n\n\n" 
      + "Alarm is set at " + targetCal.getTime() + "\n" 
      + "\n"; 
    textAlarmPrompt.setText(show); 


     Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); 
     intent.putExtra("msg", "This is Activated"); 



     pendingIntent = PendingIntent.getBroadcast(getBaseContext(), i, intent, PendingIntent.FLAG_ONE_SHOT); 

     alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent); 



     i++; 

} 
public void resetClicked(View aview) 
    { 
     deleteAlarm(); 
    } 

    private void deleteAlarm() 
    { 
     int p=0; 
     /*Intent intent = new Intent(getBaseContext(), alarmRemove.class); 
     pendingIntent= PendingIntent.getBroadcast(getBaseContext(),0, intent, 0);*/ 

     //alarmManager.cancel(intentArray.get(1)); 
     //et1.setText(Integer.toString(intentArray.size()));  


    } 
} 
+0

작동하지 않는 기능은 무엇입니까? 충돌이 있습니까, 그렇다면 logcat을 게시하고보다 구체적으로하십시오. – EarlOfEgo

+0

충돌이 아닙니다 .. 알람이 설정 중입니다. 그러나 알람이 수신되었다는 알림을 표시하지 않습니다. – incorporeal

+0

질문을 편집하여 "작동하지 않음"을 지정하십시오. 그것은 무엇을해야 하는가? 실제로 무엇을합니까? –

답변

0

죄송하지만, 귀하의 코드는 이해가되지 않습니다. 알람을 설정할 때 알람 리시버를 시작합니다. 첫째, 방송 수신자를 트리거하는 방법이 아니며, 두 번째로, 그런 식으로 트리거 할 수 있다고하더라도 처음 설정된 경우 알람을 시작하는 것은 의미가 없습니다.

Broadcast Receivers에 대해 더 자세히 읽어보십시오. 누군가 코드를 제공 할 수 있으며 코드를 잘라내어 프로젝트에 붙여 넣을 수는 있지만 배우는 방법은 아닙니다.

어디서나 접근하려면 먼저 기본에 대해 먼저 알아야합니다.

관련 문제