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