Android闹钟【复杂版】【大明进化十五】

              最近做闹钟,所以自己写了个Demo版本,这个程序是用listview单独的类来实现的,和activity类分开来实现的!这个是用数据库进行更新的,当闹钟设置后,闹钟图片变成闹钟的样子,闹钟取消后,图片变成灰色的闹钟,这个是用ListView来实现数据库更新数据的!然后弹对话框来实现时间的设置和周几重复的功能,这个功能能实现,我测试了!正确无误!

             需要注意的地方有两个:

            (1)listview每次滑动的时候,记得设置背景为透明, mAlarmListView.setCacheColorHint(0);

            (2)另一个是利用Intent传递广播的Intent的时候,传参数的时候,记得设置PendingIntent  sender=PendingIntent.getBroadcast(context,0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);的PendingIntent.FLAG_UPDATE_CURRENT,为了让每次启动PendingIntent进行更新!这两点要注意一下,我在编写的时候就是遇到这两个问题了!另外就是算法的判断!感觉好可以赞一个,支持我的原创!

         完整无bug版Android闹钟最终版【android源码闹钟解析】 .

         在这篇博客上。欢迎访问!

有问题的可以留言,想要源码的可以留言,或者在我的csdn资源上下载:

http://download.csdn.net/source/3572215

转载请标明出处:

http://blog.csdn.net/wdaming1986/article/details/6745655

              

               程序进入的开始界面:                                              点击每个闹钟后弹出的dialog界面:

                                                            

 

                                   点击设置时间后弹出的dialog界面:                          点击设置重复后弹出的界面:

                                                            

 

                                  闹钟时间到了,会弹出提醒Dialog:               点击是否开启闹钟按钮,不选中确定的界面:

                                                           

 

   下面看代码:

一、MainActivity。java类,程序入口类:

package com.cn.daming;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

	private LinearLayout mLinearLayout;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
    	mLinearLayout = (LinearLayout)findViewById(R.id.box);
    	new AlarmClockView(this,this,mLinearLayout);
    }
}


 

二、AlarmClockView。java类,listview的类:

package com.cn.daming;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class AlarmClockView extends View{
	
	private MainActivity activity;
	private LinearLayout mLinearLayout;
	private Context context;

	private DataBaseHelper dbHelper;
	private Cursor cursor;
	private ListView mAlarmListView;
	
	private List<String> ids;
	private List<String> times;
	private List<String> repeats;
	private List<String> isopens;
	private List<String> kinds;
	
	private AlarmClockAdapter alarmAdapter;
	
	Calendar c=Calendar.getInstance();
	TextView time1TextView = null;
	TextView time2TextView = null;
	Button setTimeButton1 = null;
	Button setTimeButton2 = null;
	TextView repeat1TextView = null;
	TextView repeat2TextView = null;
	Button repeatButton1 = null;
	Button repeatButton2 = null;
	CheckBox time1CheckBox = null;
	CheckBox time2CheckBox = null;
	
	String tmpS1 = "目前无设置";
	String repeatString1 = "目前无设置";
	String tmpS2 = "目前无设置";
	String repeatString2 = "目前无设置";
	boolean isOpenInt1 = false;
    boolean isOpenInt2 = false;
	String isOpentime1 = null;
	String isOpentime2 = null;
	
	boolean isOpenAlarm = false;
	CheckBox isOpenCheckBox;
	
	int[] repeatArray1 = {0,0,0,0,0,0,0};
	int[] repeatArray2 = {0,0,0,0,0,0,0};
	
	boolean repeat_1_1 = false;
	boolean repeat_1_2 = false;
    boolean repeat_1_3 = false;
	boolean repeat_1_4 = false;
	boolean repeat_1_5 = false;
	boolean repeat_1_6 = false;
	boolean repeat_1_7 = false;
	
	boolean repeat_2_1 = false;
	boolean repeat_2_2 = false;
	boolean repeat_2_3 = false;
	boolean repeat_2_4 = false;
	boolean repeat_2_5 = false;
	boolean repeat_2_6 = false;
	boolean repeat_2_7 = false;
	
	
	public AlarmClockView(final Context context,MainActivity activity, LinearLayout linearLayout) {
		super(context);
			this.context = context;
	        this.activity = activity;
	        this.mLinearLayout = linearLayout;
	        View alarmView = View.inflate(context, R.layout.alarm_listview, null);
	        mLinearLayout.addView(alarmView);  
	        mAlarmListView = (ListView)alarmView.findViewById(R.id.alarm_list);
	        mAlarmListView.setCacheColorHint(0);
	        dbHelper = new DataBaseHelper(context);
	        refreshDBHelper();
	        
	        mAlarmListView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
				public void onItemClick(AdapterView<?> arg0, View v, int position,
						long arg3) {
					
					showAlarmDialog(position);
				}
			});
	}
	
	public void refreshDBHelper()
	{
		cursor = dbHelper.selectAlarmColock();
		ids = new ArrayList<String>();
		times = new ArrayList<String>();
		repeats = new ArrayList<String>();
		isopens = new ArrayList<String>();
		kinds = new ArrayList<String>();
		
		int count = cursor.getCount();
		if(count==0){
			String[] tempStr = new String[4];
        	for(int i=1;i<=2;i++){
        		dbHelper.insertAlarmColock(tempStr);
        	}
        	int count2 = cursor.getCount();
        	if(count2>0){
    	        for(int i=0;i<count2;i++){
    	        	cursor.moveToPosition(i);
    	        	ids.add(cursor.getString(0));
    	        	times.add(cursor.getString(1));
    	        	repeats.add(cursor.getString(2));
    	        	isopens.add(cursor.getString(3));
    	        	kinds.add(cursor.getString(4));
    	        }
            }
        	cursor.close();
            dbHelper.close();
        	refreshDBHelper();
            Toast.makeText(context, R.string.not_dbcursor_values, Toast.LENGTH_SHORT).show();
		}
		else if(count>0){
	        for(int i=0;i<count;i++){
	        	cursor.moveToPosition(i);
	        	ids.add(cursor.getString(0));
	        	times.add(cursor.getString(1));
	        	repeats.add(cursor.getString(2));
	        	isopens.add(cursor.getString(3));
	        	kinds.add(cursor.getString(4));
	        }
        }
		alarmAdapter = new AlarmClockAdapter(context,ids,times,repeats,isopens,kinds);  
		mAlarmListView.setAdapter(alarmAdapter);
		cursor.close();
        dbHelper.close();
	}

	public void showAlarmDialog(int position){
	    
	    dbHelper = new DataBaseHelper(context);
	    cursor = dbHelper.selectAlarmColock();
        int count = cursor.getCount();
    	
    	if(position == 0){    		
    		LayoutInflater factory = LayoutInflater.from(context);
            final View alarm1View = factory.inflate(R.layout.time_repeat_dialog, null);
            time1TextView = (TextView)alarm1View.findViewById(R.id.text);
            setTimeButton1 = (Button)alarm1View.findViewById(R.id.mButton);
            repeat1TextView = (TextView)alarm1View.findViewById(R.id.repeattext);
            repeatButton1 = (Button)alarm1View.findViewById(R.id.repeatButton);
            time1CheckBox = (CheckBox)alarm1View.findViewById(R.id.isopen_check);
            String isOpen1 = "关";
            
            if(count==2){
            	for(int i=0;i<count;i++){
                  if(i == 0){
                	  cursor.moveToPosition(i);
                	  if(cursor.getString(1)==null){
                		  time1TextView.setText(tmpS1);
                	  }else{
                		  time1TextView.setText(cursor.getString(1));
                		  tmpS1 = cursor.getString(1);
                	  }
                	  if((cursor.getString(2))==null){
                		  repeat1TextView.setText(repeatString1);
                	  }else{
                		  repeat1TextView.setText(cursor.getString(2));
                		  repeatString1 = cursor.getString(2);
                	  }
                	  isOpen1 = cursor.getString(3);
                	  if(isOpen1!=null){
                		  if(isOpen1.equals("开")){
                			  time1CheckBox.setChecked(true);
                			  isOpenInt1 = true;
                		  }else{
                			  time1CheckBox.setChecked(false);
                			  isOpenInt1 = false;
                		  }
                	  }
                  }
    	        }
            }
            
            time1CheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
				public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
					if(arg0.isChecked()){
						isOpenInt1 = true;
					}else{
						isOpenInt1 = false;
					}
				}
            });
            
            setTimeButton1.setOnClickListener(new OnClickListener(){
				public void onClick(View arg0) {
			          c.setTimeInMillis(System.currentTimeMillis());
			          int mHour=c.get(Calendar.HOUR_OF_DAY);
			          int mMinute=c.get(Calendar.MINUTE);
			          int mDay=c.get(Calendar.DAY_OF_WEEK);
			          
			          new TimePickerDialog(context,
			            new TimePickerDialog.OnTimeSetListener()
			            {                
			              public void onTimeSet(TimePicker view,int hourOfDay,
			                                    int minute)
			              {
			                c.setTimeInMillis(System.currentTimeMillis());
			                c.set(Calendar.HOUR_OF_DAY,hourOfDay);
			                c.set(Calendar.MINUTE,minute);
			                c.set(Calendar.SECOND,0);
			                c.set(Calendar.MILLISECOND,0);
			                
			                tmpS1=format(hourOfDay)+":"+format(minute);
			                time1TextView.setText(tmpS1);
		                
							Toast.makeText(context,
									"设置闹钟时间为" + tmpS1,
									Toast.LENGTH_SHORT).show();
			              }          
			            },mHour,mMinute,true).show();
				}
            });
            
            repeatButton1.setOnClickListener(new OnClickListener(){
				public void onClick(View arg0) {
					// TODO Auto-generated method stub
					repeatString1 = "";
					new AlertDialog.Builder(context)
		            .setTitle(R.string.alert_dialog_multi_choice)
		            .setMultiChoiceItems(R.array.select_dialog_items,
		                    new boolean[]{false, false, false, false, false, false, false},
		                    new DialogInterface.OnMultiChoiceClickListener() {
		                        public void onClick(DialogInterface dialog, int whichButton,
		                                boolean isChecked) {
		                        	/* User clicked on a check box do some stuff */
			                        switch(whichButton){
			                     	   case 0: if(isChecked){
			                     		          repeatArray1[0] = 1;
			                     	           }else{
			                     	        	  repeatArray1[0] = 0;
			                     	           }
			                     	           break;
			                     	   case 1:if(isChecked){
			              		                 repeatArray1[1] = 1;
			             	                  }else{
			             	        	         repeatArray1[1] = 0;
			             	                  }
			                     	           break;
			                     	   case 2:if(isChecked){
			                     		         repeatArray1[2] = 1;
			                     	          }else{
			                     	        	 repeatArray1[2] = 0;
			                     	          }
			             	                   break;
			                     	   case 3:if(isChecked){
			                     		         repeatArray1[3] = 1;
			                     	          }else{
			                     	        	 repeatArray1[3] = 0;
			                     	          }
			             	                   break;
			                     	   case 4:if(isChecked){
			                     		         repeatArray1[4] = 1;
			                     	          }else{
			                     	        	 repeatArray1[4] = 0;
			                     	          }
			             	                   break;
			                     	   case 5:if(isChecked){
			                     		         repeatArray1[5] = 1;
			                     	          }else{
			                     	        	 repeatArray1[5] = 0;
			                     	          }
			             	                   break;
			                     	   case 6:if(isChecked){
			                     		         repeatArray1[6] = 1;
			                     	          }else{
			                     	        	 repeatArray1[6] = 0;
			                     	          }
			             	                   break;
			                     	   default: break;
			                     	}                        	
		                        }
		                    })
		            .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int whichButton) {
		                	
		                    if(repeatArray1[0] == 1){
		                    	repeatString1 += "周一"+",";
		                    	repeat_1_1 = true;
		                    }else{
		                    	repeat_1_1 = false;
		                    }
		                    
		                    if(repeatArray1[1] == 1){
		                    	repeatString1 += "周二"+",";
		                    	repeat_1_2 = true;
		                    }else{
		                    	repeat_1_2 = false;
		                    }
		                    
		                    if(repeatArray1[2] == 1){
		                    	repeatString1 += "周三"+",";
		                    	repeat_1_3 = true;
		                    }else{
		                    	repeat_1_3 = false;
		                    }
		                  
		                    if(repeatArray1[3] == 1){
		                    	repeatString1 += "周四"+",";
		                    	repeat_1_4 = true;
		                    }else{
		                    	repeat_1_4 = false;
		                    }
		                    
		                    if(repeatArray1[4] == 1){
		                    	repeatString1 += "周五"+",";
		                    	repeat_1_5 = true;
		                    }else{
		                    	repeat_1_5 = false;
		                    }
		                    
		                    if(repeatArray1[5] == 1){
		                    	repeatString1 += "周六"+",";
		                    	repeat_1_6 = true;
		                    }else{
		                    	repeat_1_6 = false;
		                    }
		                    
		                    if(repeatArray1[6] == 1){
		                    	repeatString1 += "周日";
		                    	repeat_1_7 = true;
		                    }else{
		                    	repeat_1_7 = false;
		                    }
		                    
		                    if(!(repeat_1_1 || repeat_1_2 || repeat_1_3 || repeat_1_4 ||
		                    		repeat_1_5 || repeat_1_6 || repeat_1_7)){
		                    	repeatString1 = ("无重复");
		                    }
		                    
		                    repeat1TextView.setText(repeatString1);

		                    for(int i=0;i<repeatArray1.length;i++){
		                    	repeatArray1[i] = 0;
		                    } 
		                }
		            })
		            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int whichButton) {
		                	/* User clicked No so do some stuff */

		                }
		            })
		           .show();
				}
            });
            
            //show AlertDialog
            new AlertDialog.Builder(context)
            .setIcon(R.drawable.alarm_dialog)
            .setTitle(R.string.alarm_dialog_title)
            .setView(alarm1View)
            .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                	if(isOpenInt1){
	                	isOpentime1 = "开";
	                	Intent intent1 = new Intent(context, CallAlarm.class);
	                	intent1.putExtra("RESULT", "alarm1");
	                	
	                	PendingIntent sender=PendingIntent.getBroadcast(
	                			context,0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
	                	AlarmManager am;
	                	am = (AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
	                	int nowDay = Contants.getNowWeek();
	                	int setDay = 0;
	                	if(repeatString1.equals("目前无设置"))
	                	{
	                		if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
                				am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
                			}
	                		else{
	                			Toast.makeText(context, R.string.not_time_right, Toast.LENGTH_SHORT);
	                		}
	                	}
	                	if(!(repeatString1.equals("目前无设置"))){
	                		String[] setStr = repeatString1.split(",");
	                		int[] dayOfNum = Contants.getDayOfNum(setStr);
	                		setDay = Contants.getResultDifferDay(dayOfNum, nowDay);
	                		int differDay = Contants.compareDayNowToNext(nowDay, setDay);
	                		if(differDay == 0){
	                			if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
	                				am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
	                			}else{
	                				am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis() + Contants.getDifferMillis(7),sender);
	                			}
	                		}else{
	                			am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis() + Contants.getDifferMillis(differDay),sender);  
	                		}
	                	}
	                }else{
	                	isOpentime1 = "关";
	                	Intent intent = new Intent(context, CallAlarm.class);
	                    PendingIntent sender=PendingIntent.getBroadcast(
	                                           context,0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
	                    AlarmManager am;
	                    am =(AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
	                    am.cancel(sender);
	                    Toast.makeText(context,R.string.alarm_delete1,
	                                   Toast.LENGTH_SHORT).show();
	                }
                    String[] temStr = new String[7];
                    temStr[0] = tmpS1;
                    temStr[1] = repeatString1;
	                temStr[2] = isOpentime1;
	                dbHelper.updateAlarmColock(1+"", temStr);
	                refreshDBHelper();
                }
            })
            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                	refreshDBHelper();
                }
            })
            .create().show();
            Log.v("wangxianming", "this is click Item1");
    	}
    	else if(position == 1){
    		LayoutInflater factory = LayoutInflater.from(context);
            final View alarm1View = factory.inflate(R.layout.time_repeat_dialog, null);
            time2TextView = (TextView)alarm1View.findViewById(R.id.text);
            setTimeButton2 = (Button)alarm1View.findViewById(R.id.mButton);
            repeat2TextView = (TextView)alarm1View.findViewById(R.id.repeattext);
            repeatButton2 = (Button)alarm1View.findViewById(R.id.repeatButton);
            time2CheckBox = (CheckBox)alarm1View.findViewById(R.id.isopen_check);
           
            String isOpen2 = "关";
            
            if(count==2){
            	for(int i=0;i<count;i++){
                  if(i == 1){
                	  cursor.moveToPosition(i);
                	  if(cursor.getString(1)==null){
                		  time2TextView.setText(tmpS2);
                	  }else{
                		  time2TextView.setText(cursor.getString(1));
                		  tmpS2 = cursor.getString(1);
                	  }
                	  if((cursor.getString(2))==null){
                		  repeat2TextView.setText(repeatString2);
                	  }else{
                		  repeat2TextView.setText(cursor.getString(2));
                		  repeatString2 = cursor.getString(2);
                	  }
                	  isOpen2 = cursor.getString(3);
                	  if(isOpen2!=null){
                		  if(isOpen2.equals("开")){
                			  time2CheckBox.setChecked(true);
                			  isOpenInt2 = true;
                		  }else{
                			  time2CheckBox.setChecked(false);
                			  isOpenInt2 = false;
                		  }
                	  }
                  }
    	        }
            }
            
            time2CheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
				public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
					// TODO Auto-generated method stub
					if(arg0.isChecked()){
						isOpenInt2 = true;
					}else{
						isOpenInt2 = false;
					}
				}
            });
            
            setTimeButton2.setOnClickListener(new OnClickListener(){

				public void onClick(View arg0) {
					// TODO Auto-generated method stub
			          c.setTimeInMillis(System.currentTimeMillis());
			          int mHour=c.get(Calendar.HOUR_OF_DAY);
			          int mMinute=c.get(Calendar.MINUTE);
			          int mDay=c.get(Calendar.DAY_OF_WEEK);
			          
			          new TimePickerDialog(context,
			            new TimePickerDialog.OnTimeSetListener()
			            {                
			              public void onTimeSet(TimePicker view,int hourOfDay,
			                                    int minute)
			              {
			                c.setTimeInMillis(System.currentTimeMillis());
			                c.set(Calendar.HOUR_OF_DAY,hourOfDay);
			                c.set(Calendar.MINUTE,minute);
			                c.set(Calendar.SECOND,0);
			                c.set(Calendar.MILLISECOND,0);
			                	
			                tmpS2=format(hourOfDay)+":"+format(minute);
			                time2TextView.setText(tmpS2);
			                
			                Toast.makeText(context,R.string.alarm_set2+tmpS2,Toast.LENGTH_SHORT).show();
			              }          
			            },mHour,mMinute,true).show();
				}
            });
            
            repeatButton2.setOnClickListener(new OnClickListener(){

				public void onClick(View arg0) {
					repeatString2 = "";
					new AlertDialog.Builder(context)
		            .setTitle(R.string.alert_dialog_multi_choice)
		            .setMultiChoiceItems(R.array.select_dialog_items,
		                    new boolean[]{false, false, false, false, false, false, false},
		                    new DialogInterface.OnMultiChoiceClickListener() {
		                        public void onClick(DialogInterface dialog, int whichButton,
		                                boolean isChecked) {
		                        	/* User clicked on a check box do some stuff */
			                        switch(whichButton){
			                     	   case 0: if(isChecked){
			                     		          repeatArray2[0] = 1;
			                     	           }else{
			                     	        	  repeatArray2[0] = 0;
			                     	           }
			                     	           break;
			                     	   case 1:if(isChecked){
			              		                 repeatArray2[1] = 1;
			             	                  }else{
			             	        	         repeatArray2[1] = 0;
			             	                  }
			                     	           break;
			                     	   case 2:if(isChecked){
			                     		         repeatArray2[2] = 1;
			                     	          }else{
			                     	        	 repeatArray2[2] = 0;
			                     	          }
			             	                   break;
			                     	   case 3:if(isChecked){
			                     		         repeatArray2[3] = 1;
			                     	          }else{
			                     	        	 repeatArray2[3] = 0;
			                     	          }
			             	                   break;
			                     	   case 4:if(isChecked){
			                     		         repeatArray2[4] = 1;
			                     	          }else{
			                     	        	 repeatArray2[4] = 0;
			                     	          }
			             	                   break;
			                     	   case 5:if(isChecked){
			                     		         repeatArray2[5] = 1;
			                     	          }else{
			                     	        	 repeatArray2[5] = 0;
			                     	          }
			             	                   break;
			                     	   case 6:if(isChecked){
			                     		         repeatArray2[6] = 1;
			                     	          }else{
			                     	        	 repeatArray2[6] = 0;
			                     	          }
			             	                   break;
			                     	   default: break;
			                     	}                        	
		                        }
		                    })
		            .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int whichButton) {
		                	
		                    if(repeatArray2[0] == 1){
		                    	repeatString2 += "周一"+",";
		                    	repeat_2_1 = true;
		                    }else{
		                    	repeat_2_1 = false;
		                    }
		                    
		                    if(repeatArray2[1] == 1){
		                    	repeatString2 += "周二"+",";
		                    	repeat_2_2 = true;
		                    }else{
		                    	repeat_2_2 = false;
		                    }
		                    
		                    if(repeatArray2[2] == 1){
		                    	repeatString2 += "周三"+",";
		                    	repeat_2_3 = true;
		                    }else{
		                    	repeat_2_3 = false;
		                    }
		                  
		                    if(repeatArray2[3] == 1){
		                    	repeatString2 += "周四"+",";
		                    	repeat_2_4 = true;
		                    }else{
		                    	repeat_2_4 = false;
		                    }
		                    
		                    if(repeatArray2[4] == 1){
		                    	repeatString2 += "周五"+",";
		                    	repeat_2_5 = true;
		                    }else{
		                    	repeat_1_5 = false;
		                    }
		                    
		                    if(repeatArray2[5] == 1){
		                    	repeatString2 += "周六"+",";
		                    	repeat_2_6 = true;
		                    }else{
		                    	repeat_2_6 = false;
		                    }
		                    
		                    if(repeatArray2[6] == 1){
		                    	repeatString2 += "周日";
		                    	repeat_2_7 = true;
		                    }else{
		                    	repeat_2_7 = false;
		                    }
		                    
		                    if(!(repeat_2_1 || repeat_2_2 || repeat_2_3 || repeat_2_4 ||
		                    		repeat_2_5 || repeat_2_6 || repeat_2_7)){
		                    	repeatString2 = ("无设置");
		                    }
		                    
		                    repeat2TextView.setText(repeatString2);
		                    
		                    for(int i=0;i<repeatArray1.length;i++){
		                    	repeatArray2[i] = 0;
		                    } 
		                }
		            })
		            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int whichButton) {
		                	/* User clicked No so do some stuff */

		                }
		            })
		            .show();				
				}
            });
            
            // show Dialog 
            new AlertDialog.Builder(context)
            .setIcon(R.drawable.alarm_dialog)
            .setTitle(R.string.alarm_dialog_title)
            .setView(alarm1View)
            .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
   
                	if(isOpenInt2){
	                	isOpentime2 = "开";
	                	Intent intent2 = new Intent(context, CallAlarm.class);
	                	intent2.putExtra("RESULT", "alarm2");
	                	PendingIntent sender=PendingIntent.getBroadcast(
	                			context,1, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
	                	AlarmManager am;
	                	am = (AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
	                	int nowDay = Contants.getNowWeek();
	                	int setDay = 0;
	                	if(repeatString2.equals("目前无设置"))
	                	{
	                		if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
                				am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
                			}
	                		else{
	                			Toast.makeText(context, R.string.not_time_right, Toast.LENGTH_SHORT);
	                		}
	                	}
	                	if(!(repeatString2.equals("目前无设置"))){
	                		String[] setStr = repeatString2.split(",");
	                		int[] dayOfNum = Contants.getDayOfNum(setStr);
	                		setDay = Contants.getResultDifferDay(dayOfNum, nowDay);
	                		int differDay = Contants.compareDayNowToNext(nowDay, setDay);
	                		if(differDay == 0){
	                			if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
	                				am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
	                			}else{
	                				am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis() + Contants.getDifferMillis(7),sender);
	                			}
	                		}else{
	                			am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis() + Contants.getDifferMillis(differDay),sender);  
	                		}
	                	}
	                }else{
	                	isOpentime2 = "关";
	                	Intent intent = new Intent(context, CallAlarm.class);
	                	intent.putExtra("RESULT", "cancel");
	                    PendingIntent sender=PendingIntent.getBroadcast(
	                                           context,1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
	                    AlarmManager am;
	                    am =(AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
	                    am.cancel(sender);
	                    Toast.makeText(context,R.string.alarm_delete2,
	                                   Toast.LENGTH_SHORT).show();
	                }
	                
	                String[] temStr = new String[7];
	                temStr[0] = tmpS2;
	                temStr[1] = repeatString2;
	                temStr[2] = isOpentime2;
	                dbHelper.updateAlarmColock(2+"", temStr);
	                refreshDBHelper();
                }
            })
            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                	refreshDBHelper();
                }
            })
            .create().show();
    	}
    	cursor.close();
        dbHelper.close();
	}
	
	private String format(int x)
    {
	    String s=""+x;
	    if(s.length()==1) s="0"+s;
	    return s;
	}
}


 

三、AlarmClockAdapter。java类,适配器的类:

package com.cn.daming;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class AlarmClockAdapter extends BaseAdapter{

	private LayoutInflater layoutInflater;  
    private Context context; 
    private List<String> alarm_ids;
    private List<String> alarm_times;
    private List<String> alarm_repeats;
    private List<String> alarm_isopens;
    private List<String> alarm_kinds;
    ZuJian zuJian;
    
    public AlarmClockAdapter(Context context,List<String> ids,List<String> times,List<String> repeats,
    		List<String> isopens,List<String> kinds) {  
        this.context = context;  
        this.alarm_ids = ids;
        this.alarm_times = times;
        this.alarm_repeats = repeats;
        this.alarm_isopens = isopens;
        this.alarm_kinds = kinds;
        this.layoutInflater = LayoutInflater.from(context);  
    }  
    
	public int getCount() {
		return alarm_times.size(); 
	}

	public Object getItem(int position) {
		return alarm_times.get(position);
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		zuJian =  new ZuJian();
		if (convertView == null) {
			convertView = layoutInflater.inflate(R.layout.alarm_clock, null);
			zuJian.alarmTitle = (TextView) convertView.findViewById(R.id.alarm_title);
			zuJian.alarmTimeView = (TextView) convertView.findViewById(R.id.alarm_time);
			zuJian.repeatAlarmView = (TextView) convertView.findViewById(R.id.alarm_repeat_time);
			zuJian.showISOpenView = (ImageView) convertView.findViewById(R.id.show_open_close);
			convertView.setTag(zuJian);
		} else {
			zuJian = (ZuJian) convertView.getTag();
		}
		if (alarm_kinds.get(position) == null || alarm_kinds.get(position) == "") {
			if(position == 0){
				zuJian.alarmTitle.setText("大明闹钟一");
			}
			if(position == 1){
				zuJian.alarmTitle.setText("大明闹钟二");
			}
		} else {
			zuJian.alarmTitle.setText(alarm_kinds.get(position));
		}

		if (alarm_times.get(position) == null || alarm_times.get(position) == "") {
			zuJian.alarmTimeView.setText("目前无设置");
		} else {
			zuJian.alarmTimeView.setText(alarm_times.get(position));
		}

		if (alarm_repeats.get(position) == null || alarm_repeats.get(position) == "") {
			zuJian.repeatAlarmView.setText("目前无设置");
		} else {
			zuJian.repeatAlarmView.setText(alarm_repeats.get(position));
		}

		if (alarm_isopens.get(position) == null || alarm_isopens.get(position) == "") {
		   ((ImageView) zuJian.showISOpenView).setBackgroundResource(R.drawable.alarm_dialog);
		} else {
			if(alarm_isopens.get(position).equals("开")){
				((ImageView) zuJian.showISOpenView).setBackgroundResource(R.drawable.clock);
			}
			if(alarm_isopens.get(position).equals("关")){
				((ImageView) zuJian.showISOpenView).setBackgroundResource(R.drawable.alarm_dialog);
			}
		}
		
		return convertView;
	}

    final class ZuJian {
		public TextView alarmTitle;
		public TextView alarmTimeView;
		public TextView repeatAlarmView;
		public ImageView showISOpenView;
		
	}
}


 

四、CallAlarm。java类,接受广播BroadcastReceiver的类:

package com.cn.daming;

/* import class */
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

/*AlarmReceiver */
public class CallAlarm extends BroadcastReceiver
{
  @Override
  public void onReceive(final Context context, Intent intent)
  {	  
	    String getStr = intent.getExtras().getString("RESULT");
	    Log.v("wangxianming", "RESULT = "+getStr);
		Intent alaramIntent = new Intent(context, AlarmAgainSetting.class);
		Bundle bundleRet = new Bundle();
		bundleRet.putString("STR_RESULT", getStr);
		alaramIntent.putExtras(bundleRet);
		alaramIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(alaramIntent);
  }
}


 

五、Contants。java类,工具类:

package com.cn.daming;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class Contants {
	
    //repeated day of week define
    public static Map<String, Integer> mapWeek = new HashMap<String,Integer>();
    
    public static void addMapWeek(){
    	mapWeek.put("周一", 1);
    	mapWeek.put("周二", 2);
    	mapWeek.put("周三", 3);
    	mapWeek.put("周四", 4);
    	mapWeek.put("周五", 5);
    	mapWeek.put("周六", 6);
    	mapWeek.put("周日", 7);
    	mapWeek.put("无重复", 0);
    }
    
    public static int getMapWeek(String str){
    	Contants.addMapWeek();
    	int dayOfMapWeek = 0;
    	if(str != null){
    		dayOfMapWeek = mapWeek.get(str);
    	}
		return dayOfMapWeek;
    }
    
    public static String[] getDatetimeString(){
		Date date = new Date();
		String[] tempStr = new String[2];
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String str = format.format(date);
		tempStr[0] = str.substring(0, 10);
		tempStr[1] = str.substring(11, str.length());
		return tempStr;
	}
    
    public static long getNowTimeMinuties()
    {
    	return System.currentTimeMillis();
    }
    
    public static boolean differSetTimeAndNowTime(long setTime)
    {
    	if(setTime >= getNowTimeMinuties()){
    		return true;
    	}else{
    		return false;
    	}
    }
    
    public static long getDifferMillis(int differDays)
    {
    	return differDays * 24 * 60 * 60 * 1000;
    }
    
    //compare nowDay to nextDay
    public static int compareDayNowToNext(int nowDay,int nextDay){
    	if(nextDay > nowDay){
    		return (nextDay-nowDay);
    	}else if(nextDay == nowDay){
    	    return 0;	
    	}else{
    		return (7-(nowDay-nextDay));
    	}
    }
    
    //turn the nowday to China`s day of Week
    public static Map<String, Integer> nowWeek = new HashMap<String,Integer>();
    
    public static void addNowWeek()
    {
    	nowWeek.put("1", 7);
    	nowWeek.put("2", 1);
    	nowWeek.put("3", 2);
    	nowWeek.put("4", 3);
    	nowWeek.put("5", 4);
    	nowWeek.put("6", 5);
    	nowWeek.put("7", 6);
    }
    
    public static int getNowWeek()
    {
    	Calendar nowCal = Calendar.getInstance();
    	Date nowDate = new Date(System.currentTimeMillis());
    	nowCal.setTime(nowDate);
    	int nowNum = nowCal.get(nowCal.DAY_OF_WEEK);
    	String nowNumStr = String.valueOf(nowNum);
        Contants.addNowWeek();
        int nowDayOfWeek = 0;
        if(nowNumStr != null){
        	nowDayOfWeek = nowWeek.get(nowNumStr);
        }
        return nowDayOfWeek;
    }
    
    public static int getSetDay(String str)
    {
        	if(str.equals("周一")){
        		return 1;
        	}
        	if(str.equals("周二")){
        		return 2;
        	}
        	if(str.equals("周三")){
        		return 3;
        	}
        	if(str.equals("周四")){
        		return 4;
        	}
        	if(str.equals("周五")){
        		return 5;
        	}
        	if(str.equals("周六")){
        		return 6;
        	}
        	if(str.equals("周日")){
        		return 7;
        	}
        	return 0;
    }
    
    public static int[] getDayOfNum(String[] str)
    {
    	int[] dayOfInt = new int[str.length];
    	for(int i=0;i<str.length;i++){
    		dayOfInt[i] = getSetDay(str[i]);
    	}
    	return dayOfInt;
    }
    
    public static int getResultDifferDay(int[] in,int nowDay)
    {
         int result = 0;
         for(int i=0;i<in.length;i++){
        	 if(in[i] >= nowDay){
        		 result = in[i];
        		 break;
        	 }
         }
         
         if(result == 0){
        	 result = in[0];
         }
         return result;
    }
    
    public static int getResultDifferDay1(int[] in,int nowDay)
    {
         int result = 0;
         for(int i=0;i<in.length;i++){
        	 if(in[i] > nowDay){
        		 result = in[i];
        		 break;
        	 }
         }
         
         if(result == 0){
        	 result = in[0];
         }
         return result;
    }
}


 

六、DataBaseHelper。java类,数据库sqlite类:

package com.cn.daming;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataBaseHelper extends SQLiteOpenHelper {

	private final static String DATABASE_NAME = "alarm_db";
	private final static int DATABASE_VERSION = 1;
	
	private final static String ALARM_COLOCK_TABLE = "alarmcolock";
	public final static String ALARM_ID = "_id";
	public final static String ALARM_TIME = "alarmtime"; //alarm time
	public final static String ALARM_REPEAT = "alarmrepeat";//alarm repeate is or not
	public final static String ALARM_ISOPEN = "alarmisopen";//alarm open is 0r not
	public final static String ALARM_KIND = "alarmkind"; //alarm is kind(1 is shuangseqiu ,2 is da le tou )
	public final static String ALARM_SPARE1 = "alarmspare1";//spare1
	public final static String ALARM_SPARE2 = "alarmspare2";//spare2
	public final static String ALARM_SPARE3 = "alarmspare3";//spare3
	
	public DataBaseHelper(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {

		String  sql = "create table "+ALARM_COLOCK_TABLE+" ("
	                    +ALARM_ID+" integer primary key autoincrement, "
	                    +ALARM_TIME+" text, "
	                    +ALARM_REPEAT+" text, "
	                    +ALARM_ISOPEN+" text, "
	                    +ALARM_KIND+" text, "
	                    +ALARM_SPARE1+" text, "
	                    +ALARM_SPARE2+" text, "
	                    +ALARM_SPARE3+" text )";
		       db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
		
		String sql = "drop table if exists "+ALARM_COLOCK_TABLE;
		db.execSQL(sql);
	}

	
	//the action in AlarmColock table 
	public long insertAlarmColock(String[] strArray)
	{
		SQLiteDatabase db = this.getWritableDatabase();
		ContentValues conv = new ContentValues();
		conv.put(ALARM_TIME, strArray[0]);
		conv.put(ALARM_REPEAT, strArray[1]);
		conv.put(ALARM_ISOPEN, strArray[2]);
		conv.put(ALARM_KIND, strArray[3]);	
		return db.insert(ALARM_COLOCK_TABLE, null, conv);
	}
	
	public Cursor selectAlarmColock(){
		SQLiteDatabase db = this.getReadableDatabase();
		Cursor cursor = db.query(ALARM_COLOCK_TABLE, null, null, null, null, null, null);
		return cursor;
	}
	
	public Cursor getAlarmColock(String id){
		SQLiteDatabase db = this.getReadableDatabase();
		String where = ALARM_ID+"=?";
		String[] whereValues = {id};
		Cursor cursor = db.query(ALARM_COLOCK_TABLE, null, where, whereValues, null, null, null);
		return cursor;
	}
	
	public void deleteAlarmColock(String id){
		SQLiteDatabase db = this.getWritableDatabase();
		String where = ALARM_ID+"=?";
		String[] whereValues = {id};
		db.delete(ALARM_COLOCK_TABLE, where, whereValues);
	}
	
	public int updateAlarmColock(String id,String[] strArray){
		SQLiteDatabase db = this.getWritableDatabase();
		String where = ALARM_ID+"=?";
		String[] whereValues = {id};
		ContentValues cv = new ContentValues();
		cv.put(ALARM_TIME, strArray[0]);
		cv.put(ALARM_REPEAT, strArray[1]);
		cv.put(ALARM_ISOPEN, strArray[2]);
		cv.put(ALARM_KIND, strArray[3]);	
		Log.v("wangxianming", "cv : "+cv.get("ALARM_TIME")+cv.get("ALARM_REPEAT")+cv.get("ALARM_ISOPEN")+cv.get("ALARM_KIND"));
		return db.update(ALARM_COLOCK_TABLE, cv, where, whereValues);
	}
}


 

七、AlarmAgainSetting。java类,闹钟重复设置的类:

package com.cn.daming;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.Toast;

public class AlarmAgainSetting extends Activity{

	private DataBaseHelper dbHelper;
	private Cursor cursor;
	Intent getAlarmAgainSetting;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		getAlarmAgainSetting = AlarmAgainSetting.this.getIntent();
		String getAlarmAgainSettingStr = getAlarmAgainSetting.getExtras().getString("STR_RESULT");
		
		dbHelper = new DataBaseHelper(this);
		
		if(getAlarmAgainSettingStr.equals("alarm1")){
			Intent againIntent = new Intent(AlarmAgainSetting.this, CallAlarm.class);
			againIntent.putExtra("RESULT", "alarm1");
			PendingIntent sender=PendingIntent.getBroadcast(
					AlarmAgainSetting.this,0, againIntent, PendingIntent.FLAG_UPDATE_CURRENT);
			AlarmManager am;
			am = (AlarmManager)getSystemService(ALARM_SERVICE);
			int nowDay = Contants.getNowWeek();
			int setDay = 0;
			
			cursor = dbHelper.selectAlarmColock();
			String str1 = null;
			int count1 = cursor.getCount();
			if(count1 > 0){
				for(int i=0;i<count1;i++){
	                  if(i == 0){
	                	  cursor.moveToPosition(i);
				          str1 = cursor.getString(2);
	                  }
				}
			}
			if(!(str1.equals("目前无设置"))){
				String[] setStr = str1.split(",");
	    		int[] dayOfNum = Contants.getDayOfNum(setStr);
	    		setDay = Contants.getResultDifferDay1(dayOfNum, nowDay);
	    		int differDay = Contants.compareDayNowToNext(nowDay, setDay);
	    		if(differDay == 0){
	    		   am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties() + Contants.getDifferMillis(7),sender);
	    		}else{
	    			am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties() + Contants.getDifferMillis(differDay),sender);  
	    		}
	    	}
		}
		
		if(getAlarmAgainSettingStr.equals("alarm2")){
			/* allAlarm.class */
			Intent againIntent = new Intent(AlarmAgainSetting.this, CallAlarm.class);
			againIntent.putExtra("RESULT", "alarm2");
			/* PendingIntent */
			PendingIntent sender=PendingIntent.getBroadcast(
					AlarmAgainSetting.this,1, againIntent, PendingIntent.FLAG_UPDATE_CURRENT);
			/* AlarmManager.RTC_WAKEUP
			 * */
			AlarmManager am;
			am = (AlarmManager)getSystemService(ALARM_SERVICE);
			int nowDay = Contants.getNowWeek();
			int setDay = 0;
			
			cursor = dbHelper.selectAlarmColock();
			String str2 = null;
			int count2 = cursor.getCount();
			if(count2 > 0){
				for(int i=0;i<count2;i++){
	                  if(i == 1){
	                	  cursor.moveToPosition(i);
				          str2 = cursor.getString(2);
	                  }
				}
			}
			if(!(str2.equals("目前无设置"))){
				String[] setStr = str2.split(",");
	    		int[] dayOfNum = Contants.getDayOfNum(setStr);
	    		setDay = Contants.getResultDifferDay1(dayOfNum, nowDay);
	    		int differDay = Contants.compareDayNowToNext(nowDay, setDay);
	    		if(differDay == 0){
	    		   am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties() + Contants.getDifferMillis(7),sender);
	    		}else{
	    			am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties() + Contants.getDifferMillis(differDay),sender);  
	    		}
	    	}
		}
		cursor.close();
		dbHelper.close();
		
		Toast.makeText(this, R.string.alarm_time_come, Toast.LENGTH_SHORT).show();
		  
		 new AlertDialog.Builder(this)
	     .setIcon(R.drawable.clock)
	     .setTitle("大明闹钟时间到了!!")
	     .setMessage("你使用大明闹钟时间到了!!!")
	     .setPositiveButton("确定",
	      new DialogInterface.OnClickListener()
	     {
	       public void onClick(DialogInterface dialog, int whichButton)
	       {
	         /*AlarmAlertActivity */
	         finish();
	       }
	     }).setNegativeButton("取消", 
	     		 new DialogInterface.OnClickListener()
	     {
	       public void onClick(DialogInterface dialog, int whichButton)
	       {
	         /*AlarmAlertActivity */
		       finish();
	       }
	     }).show();
	}

}


 

布局文件

一、main。xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/alarm_bg"
    >
   <LinearLayout android:id="@+id/box"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        >      
    </LinearLayout>  
</LinearLayout>
 

二、alarm_clock.xml布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="320dip"
  android:layout_height="wrap_content"
  android:orientation="vertical">
		  <TextView  
	        android:id="@+id/alarm_title"  
	        android:layout_width="320dip"   
	        android:layout_height="wrap_content" 
	        android:textColor="#FF000000"   
	        android:textSize="23px"   
	        android:layout_margin="5px"
	      /> 
	      <LinearLayout
			  xmlns:android="http://schemas.android.com/apk/res/android"
			  android:layout_width="320dip"
			  android:layout_height="wrap_content"
			  android:orientation="horizontal"
			  >
			  <LinearLayout
				  xmlns:android="http://schemas.android.com/apk/res/android"
				  android:layout_width="250dip"
				  android:layout_height="wrap_content"
				  android:orientation="horizontal">   
				  <TextView
				     android:id="@+id/alarm_image"
				     android:scaleType="centerCrop"
				     android:layout_width="20dip"
				     android:layout_height="wrap_content"
				     android:layout_margin="8px"
				  />
				  <LinearLayout  
				      android:layout_width="222dip"  
				      android:layout_height="wrap_content"  
				      android:orientation="vertical"  
				   >  
					    <TextView  
					        android:id="@+id/alarm_time"  
					        android:layout_width="222dip"   
					        android:layout_height="wrap_content" 
					        android:paddingLeft="8dip"
					        android:layout_marginBottom="3dip"   
					        android:textColor="#FF000000"   
					        android:textSize="18px"   
					    /> 
					     <TextView
						        android:id="@+id/alarm_repeat_time"
						        android:layout_width="222dip"
						        android:layout_height="wrap_content"
						        android:paddingLeft="8dip"
						        android:layout_gravity="left"
						        android:textColor="#FF000000"
						        android:textSize="10px"
						  /> 
				     </LinearLayout> 
	           </LinearLayout>
	           <View
		          android:layout_width="2dip"
			      android:layout_height="match_parent"
			      android:textColor="#FF000000"
		      />
	           <ImageView
			      android:id="@+id/show_open_close"
			      android:layout_width="38dip"
			      android:layout_height="wrap_content"
			      android:paddingTop="35dip"
			      android:scaleType="centerCrop"
			      android:layout_gravity="bottom"
			      android:gravity="bottom"
			      android:textColor="#FF000000"
			  />
			  <TextView
			      android:layout_width="30dip"
			      android:layout_height="wrap_content"
			  />
	 </LinearLayout>
</LinearLayout>

三、alarm_listview.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView  
		android:id="@+id/note_textview"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content" 
	    android:layout_gravity="center_horizontal|center_vertical"
	    android:gravity="center_horizontal|center_vertical"
	    android:paddingLeft="10dip"
	    android:text="@string/alarm_list"
	    android:textColor="#FF000000" 
		android:textSize="30dip"
		android:textStyle="bold"
		android:paddingTop="6dip"
		android:paddingBottom="6dip"
     />
    
	<ListView
		android:id="@+id/alarm_list"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
	/>
</LinearLayout>

 

四、time_repeat_dialog.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  >
  <AbsoluteLayout
	  xmlns:android="http://schemas.android.com/apk/res/android"
	  android:id="@+id/layout1"
	  android:layout_width="fill_parent"
	  android:layout_height="fill_parent"
	  android:background="@drawable/white"
	>
		<DigitalClock 
		    android:id="@+id/dClock"
			android:layout_width="wrap_content" 
			android:layout_height="wrap_content"
			android:textSize="40sp" 
			android:textColor="@drawable/blue"
			android:layout_x="58px" 
			android:layout_y="5px">
		</DigitalClock>
  
        <TextView
		    android:id="@+id/isopen_text"
		    android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:text="@string/str_isopen_text"
		    android:textSize="16px"
		    android:textColor="@drawable/black"
		    android:layout_x="10px"
		    android:layout_y="64px"
		  >
		  </TextView>
		  <CheckBox
		    android:id="@+id/isopen_check"
		    android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:textSize="20sp"
		    android:textColor="@drawable/black"
		    android:layout_x="160px"
		    android:layout_y="54px"
		  />
  
         <TextView
		    android:id="@+id/text"
		    android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:text="@string/str_title1"
		    android:textSize="20sp"
		    android:textColor="@drawable/black"
		    android:layout_x="10px"
		    android:layout_y="104px"
		  >
		  </TextView>
		  <Button
		    android:id="@+id/mButton"
		    android:layout_width="108px"
		    android:layout_height="40px"
		    android:text="@string/str_button1"
		    android:textColor="@drawable/black"
		    android:textSize="18sp"
		    android:layout_x="160px"
		    android:layout_y="102px"
		  >
		  </Button>
		  
		  <TextView
		    android:id="@+id/repeattext"
		    android:layout_width="wrap_content"
		    android:layout_height="wrap_content"
		    android:text="@string/str_default"
		    android:textSize="16sp"
		    android:textColor="@drawable/red"
		    android:layout_x="10px"
		    android:layout_y="145px"
		  >
		  </TextView>
   		  <Button
   		    android:id="@+id/repeatButton"
	        android:layout_width="108px"
	        android:layout_height="40px" 
		    android:layout_x="160px"
		    android:layout_y="182px"
		    android:textColor="@drawable/black"
		    android:textSize="18sp"
		    android:text="@string/repeat_button"
   		  />
     </AbsoluteLayout>
</LinearLayout>


value目录下的文件

一、arrays.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="select_dialog_items">
        <item>周一</item>
        <item>周二</item>
        <item>周三</item>
        <item>周四</item>
        <item>周五</item>
        <item>周六</item>
        <item>周日</item>
    </string-array>   
</resources>

二、color.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <drawable name="white">#FFFFFFFF</drawable>
  <drawable name="black">#000000</drawable>
  <drawable name="blue">#0000FF</drawable>
  <drawable name="red">#FF0000</drawable>
  <drawable name="dackgray">#666666</drawable>
  <drawable name="yellow">#FFFFFF00</drawable>
</resources>
 

三、string.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">AlarmApp</string>
    <string name="alarm_list">大明闹钟</string>
    <string name="not_dbcursor_values">数据库中没有值,请设置你的闹钟。。。。</string>
    <string name="str_isopen_text">是否开启闹钟</string>
    <string name="str_title1">设置闹钟</string>
    <string name="str_button1">设置时间</string>
    <string name="str_default">目前无设置</string>
    <string name="repeat_button">设置重复</string>
    <string name="alert_dialog_ok">确定</string>
	<string name="alert_dialog_cancel">取消</string>
	<string name="alarm_dialog_title">闹钟设置</string>
	<string name="alert_dialog_multi_choice">重复闹钟设置</string>
	<string name="alarm_time_come">您使用大明闹钟设置的闹钟时间到了!!!</string>
	<string name="alarm_delete1">大明闹钟一删除成功!</string>
	<string name="alarm_delete2">大明闹钟二删除成功!</string>
	<string name="alarm_set2">大明闹钟二时间为:</string>
	<string name="not_time_right">闹钟时间设置不对,请选择周几重复!</string>
</resources>
注意:广播一定要在Manifest中注册

AndroidManifest.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.cn.daming"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
    
    <!-- 註冊receiver CallAlarm -->
        <receiver android:name=".CallAlarm" android:process=":remote" />
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".AlarmAgainSetting"/>
    </application>
</manifest>



 

 

 

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 59
    评论
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值