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

Возможно повторение Тревоги, которое необходимо использовать. Пожалуйста, нажмите на ссылку ниже ...

Установка повторяющегося сигнализации 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);