2014-11-06 74 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

也许重复警报你需要使用的那个。 请点击下面的链接...

设置一个重复报警 https://developer.android.com/training/scheduling/alarms.html

代码示例形成上面的链接:

唤醒设备火灾报警器在精确上午8:30,并且此后每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);