Android 我想将特定工作日的闹钟设置为特定日期?
我想在特定的时间在特定的日期实现报警,我如何通过用户选择工作日来实现,他们是否有重复天数的教程,我正在尝试这一个,请帮助我如何实现用户选择的天数Android 我想将特定工作日的闹钟设置为特定日期?,android,android-alarms,Android,Android Alarms,我想在特定的时间在特定的日期实现报警,我如何通过用户选择工作日来实现,他们是否有重复天数的教程,我正在尝试这一个,请帮助我如何实现用户选择的天数 public class MainActivity extends Activity { Calendar calNow, calSet; // call this method for alram setAlarm(calSet); TimePicker myTimePicker; Button buttonsta
public class MainActivity extends Activity {
Calendar calNow, calSet;
// call this method for alram setAlarm(calSet);
TimePicker myTimePicker;
Button buttonstartSetDialog;
Button buttonCancelAlarm;
TextView textAlarmPrompt;
ListView listView_weekly;
TimePickerDialog timePickerDialog;
int mSelectedPosition_week, mSelectedPosition_month = 1;
final static int RQS_1 = 1;
protected static final String TAG = null;
private ReminderFreqSelectionAdapter mAdapter_week, mAdapter_month = null;
List<String> weekly_list, monthly_list, empty_list;
Integer[] Selectedweeklist;
String[] weekly_arry = new String[] { "Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView_weekly = (ListView) findViewById(R.id.list_weekly);
listView_weekly.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
textAlarmPrompt = (TextView) findViewById(R.id.alarmprompt);
buttonstartSetDialog = (Button) findViewById(R.id.startSetDialog);
buttonstartSetDialog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
textAlarmPrompt.setText("");
openTimePickerDialog(false);
}
});
weekly_list = new ArrayList<String>();
Selectedweeklist = new Integer[7];
for (int i = 0; i < weekly_arry.length; i++) {
String item = weekly_arry[i];
weekly_list.add(item);
}
System.out.println("weekly_list size: " + weekly_list.size());
mAdapter_week = new ReminderFreqSelectionAdapter(this, weekly_list);
listView_weekly.setAdapter(mAdapter_week);
}
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);
timePickerDialog.setTitle("Set Alarm Time");
timePickerDialog.show();
}
OnTimeSetListener onTimeSetListener = new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calNow = Calendar.getInstance();
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);
daysetAlarm(2);
}
};
public void daysetAlarm(int dayOfWeek) {
// Add this day of the week line to your existing code
System.out.println("alram calling");
Calendar alarmCalendar = Calendar.getInstance();
alarmCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek);
Calendar time = calSet;
Long timeeset = time.getTimeInMillis();
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Also change the time to 24 hours.
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, timeeset,
24 * 60 * 60 * 1000, pendingIntent);
}
private void setAlarm(Calendar targetCal) {
textAlarmPrompt.setText("\n\n***\n" + "Alarm is set@ "
+ targetCal.getTime() + "\n" + "***\n");
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
targetCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
pendingIntent);
}
private void cancelAlarm() {
textAlarmPrompt.setText("\n\n***\n" + "Alarm Cancelled! \n" + "***\n");
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
getBaseContext(), RQS_1, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
class ReminderFreqSelectionAdapter extends BaseAdapter {
Context context;
LayoutInflater inflater;
private Activity activity;
public ReminderFreqSelectionAdapter(Context ctx,
List<String> weekly_list) {
this.context = ctx;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return weekly_list.size();
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View v = convertView;
ViewHolder holder;
if (v == null) {
holder = new ViewHolder();
v = inflater.inflate(R.layout.elist, null);
holder.title_tv = (TextView) v.findViewById(R.id.text);
holder.chekdTv = (CheckBox) v
.findViewById(R.id.checkbox);
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
holder.title_tv.setText(weekly_list.get(position));
holder.chekdTv.setOnClickListener(new OnClickListener() {
private int mPosition;
void OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View v) {
//is chkIos checked?
if (((CheckBox) v).isChecked()) {
//Case 1
MainActivity sct = (MainActivity)context;
/**** Call onItemClick Method inside CustomListViewAndroidExample Class ( See Below )****/
// sct.onItemClick(mPosition);
System.out.println("check box checking");
}
}
});
v.setOnClickListener(new OnItemClickListener( position ));
return v;
}
private class OnItemClickListener implements OnClickListener{
private int mPosition;
OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View arg0) {
MainActivity sct = (MainActivity)context;
//**** Call onItemClick Method inside CustomListViewAndroidExample Class ( See Below )****//*
sct.onItemClick(mPosition);
}
}
class ViewHolder {
TextView title_tv;
CheckBox chekdTv;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
// System.out.println("itme: "+listView.getItemAtPosition(position));
return null;
}
}
public void onItemClick(int mPosition) {
// TODO Auto-generated method stub
System.out.println("position: "+mPosition);
Toast.makeText(getApplicationContext(), ".dkfd", 1).show();
}
}
my main xml is:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/startSetDialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Set Target Time" />
<TextView
android:id="@+id/alarmprompt"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list_weekly"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="25dp" />
</LinearLayout>
my weekdays list view xml is:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attributesCLL"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1.0"
android:paddingLeft="15dip"
android:textSize="16dip" />
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="4dip"
android:checkMark="?android:attr/textCheckMark"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
公共类MainActivity扩展活动{
日历calNow,calSet;
//为alram setAlarm调用此方法(calSet);
时间选择器myTimePicker;
按钮启动对话框;
按钮、按钮、键盘;
text查看text报警提示;
ListView ListView_每周;
TimePickerDialog TimePickerDialog;
int mSelectedPosition_周,mSelectedPosition_月=1;
最终静态整数RQS_1=1;
受保护的静态最终字符串标记=null;
私人提醒ReqSelectionAdapter mAdapter_week,mAdapter_month=null;
列出周清单、月清单、空清单;
整数[]Selectedweeklist;
String[]weekly\u arry=新字符串[]{“星期日”、“星期一”、“星期二”,
“星期三”、“星期四”、“星期五”、“星期六”};
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView\u weekly=(listView)findViewById(R.id.list\u weekly);
listView\u weekly.setChoiceMode(listView.CHOICE\u MODE\u MULTIPLE);
textAlarmPrompt=(TextView)findViewById(R.id.alarmprompt);
buttonstartSetDialog=(按钮)findViewById(R.id.startSetDialog);
buttonstartSetDialog.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
textAlarmPrompt.setText(“”);
openTimePickerDialog(假);
}
});
每周列表=新的ArrayList();
Selectedweeklist=新整数[7];
对于(int i=0;i 如果(calSet.compareTo)(calNow)使用DatePicker将日期作为user.hai的输入,我将在带有复选框的listview中提供从周六到周日的列表,然后在该列表中我希望发送给alaramsercices userselected weekdays