2014-11-06 3 views
0

사용자가 미리 알림을 설정할 알림 종류의 앱이 있습니다.android alarmmanager와 (과) 함께

대부분의 자습서와 예제는 알람이 특정 시간 이후 또는 미리 정의 된 시간 이후에 설정된 알람 관리자의 것이 었습니다. 하지만 어떻게 사용자가 입력 한 데이터와 시간을 설정할 수 있습니다. 또한 사용자가 설정 한 경보가 두 개 이상 있습니다.

이들은 모두 데이터베이스에 저장되고 lsitview로 채워집니다.

이것은 사용자가 날짜와 시간을 설정할 부분입니다. (텍스트 "dte"와 "tme"는 사용자가 선택한 날짜와 시간을 표시합니다) 그리고 나서 사용자가 저장 버튼을 클릭하면 알람을 설정하려고합니다 사용자가 선택한 시간

Calendar calender = Calendar.getInstance(); 
TextView dte,tme, doit; 
ImageButton cal; 
EditText enteredTask; 
Button save; 
String taskentered, dateentered, timeentered; 
tasks_Database_Operations tasksDatabaseOperations; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.add_task_fragment, container, false); 
    dte = (TextView) view.findViewById(R.id.datetv); 
    tme = (TextView) view.findViewById(R.id.timetv); 
    Log.d("LifeCycle HirakDebug", "aTF View Created"); 
    return view; 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    Log.d("LifeCycle HirakDebug", "aTF Resume"); 

    enteredTask = (EditText) getActivity().findViewById(R.id.user_entered_task); 
    doit = (TextView) getActivity().findViewById(R.id.title); 
    cal = (ImageButton) getActivity().findViewById(R.id.select_date); 
    save = (Button) getActivity().findViewById(R.id.save_tsk); 
    save.setOnClickListener(this); 
    cal.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
    if (view == cal) { 
     FragmentManager fm = getFragmentManager(); 
     date_time_picker dTP = new date_time_picker(); 
     dTP.setTargetFragment(this, 1); 
     dTP.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.myCustomDialog); 
     dTP.show(fm, "dTP"); 
     Log.d("HirakDebug", "add_task_frag setDate called"); 
    } else if (view == save) { 
     saveData(); 
     Log.d("HirakDebug", "add_task_frag saveData called"); 
    } 
} 

private void saveData() { 
    String iidd = null; 
    taskentered = enteredTask.getText().toString(); 
    dateentered = dte.getText().toString(); 
    timeentered = tme.getText().toString(); 
    tasksDatabaseOperations = new tasks_Database_Operations(getActivity()); 
    long id = tasksDatabaseOperations.insertData(iidd, taskentered, dateentered, timeentered); 
    if (id < 0) { 
     Log.e("HirakDebug", "add_task_frag failed insertData operation"); 
    } else { 
     Log.d("HirakDebug", "Data sent to be inserted"); 
    } 
    tasksDatabaseOperations.sqLiteDatabase.close(); 
    goBackToTaskListFragment(); 
} 
private void goBackToTaskListFragment() { 
    tasksListFrag tLF = new tasksListFrag(); 
    add_task_frag aTF = new add_task_frag(); 
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.setCustomAnimations(R.anim.slide_up, R.anim.slide_down); 
    ft.remove(this); 
    ft.replace(R.id.dynamic_content, tLF, "tLF"); 
    ft.commit(); 
    Log.d("HirakDebug", "add_task_frag went back to taskListFrag"); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK && requestCode == 1){ 
     String date = data.getStringExtra("date"); 
     String time = data.getStringExtra("time"); 
     dte.setText(date); 
     tme.setText(time); 
    } 
} 

답변

0

아마도 반복해서 사용하십시오. ,

일어나 정확히 오전 8시 30 분 알람을 발생하는 장치

은 위의 링크를 형성 반복 알람 https://developer.android.com/training/scheduling/alarms.html

코드 예제를 설정 ... 아래 링크를 클릭하십시오 그 이후 20 분마다 :

\t private AlarmManager alarmMgr; 
 
\t private PendingIntent alarmIntent; 
 
\t ... 
 
\t alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
 
\t Intent intent = new Intent(context, AlarmReceiver.class); 
 
\t alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
 

 
\t // Set the alarm to start at 8:30 a.m. 
 
\t Calendar calendar = Calendar.getInstance(); 
 
\t calendar.setTimeInMillis(System.currentTimeMillis()); 
 
\t calendar.set(Calendar.HOUR_OF_DAY, 8); 
 
\t calendar.set(Calendar.MINUTE, 30); 
 

 
\t // setRepeating() lets you specify a precise custom interval--in this case, 
 
\t // 20 minutes. 
 
\t alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
 
\t \t \t 1000 * 60 * 20, alarmIntent);

관련 문제