2014-11-06 96 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);