private String monToFriAlarm = "1,2,3,4,5";//设置闹铃周一至周五
private long alarm_id = 0;//标识PendingIntent第二个参数
//存入数据库
ContentValues cv = new ContentValues();
cv.put("monToFriAlarm", monToFriAlarm);
SQLiteDatabase db = helper.getWritableDatabase();
alarm_id = db.insert("huodong", null, cv);
//设置闹铃时间
Calendar btAlarmCalendar = Calendar.getInstance();
btAlarmCalendar.set(Calendar.HOUR_OF_DAY, 12);
btAlarmCalendar.set(Calendar.MINUTE, 0);
btAlarmCalendar.set(Calendar.SECOND, 0);
btAlarmCalendar.set(Calendar.MILLISECOND, 0);
//设置闹铃
Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("alarm_id", alarm_id+"");
PendingIntent sender = PendingIntent.getBroadcast(this,(int) alarm_id, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
int nowDay = UtilDqq.getNowWeek();
int setDay = 0;
String[] setStr = monToFriAlarm.split(",");
int[] dayOfNum = Util.getDayOfNum(setStr);
setDay = Util.getResultDifferDay(dayOfNum, nowDay);
int differDay = Util.compareDayNowToNext(nowDay, setDay);
if (differDay == 0) {
if (Util.differSetTimeAndNowTime(btAlarmCalendar
.getTimeInMillis())) {
am.set(AlarmManager.RTC_WAKEUP, btAlarmCalendar.getTimeInMillis(),
sender);
}
else {
am.set(AlarmManager.RTC_WAKEUP, btAlarmCalendar.getTimeInMillis()
+ Util.getDifferMillis(7), sender);
}
}
else {
am.set(AlarmManager.RTC_WAKEUP, btAlarmCalendar.getTimeInMillis()
+ Util.getDifferMillis(differDay), sender);
}
Util{
public static Map<String, Integer> nowWeek = new HashMap<String,Integer>();
private static void addNowWeek() {
// TODO Auto-generated method stub
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);
UtilDqq.addNowWeek();
int nowDayOfWeek=0;
if(nowNumStr!=null){
nowDayOfWeek=nowWeek.get(nowNumStr);
}
return nowDayOfWeek;
}
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 getSetDay(String str)
{
if(str.equals("1")){
return 1;
}
if(str.equals("2")){
return 2;
}
if(str.equals("3")){
return 3;
}
if(str.equals("4")){
return 4;
}
if(str.equals("5")){
return 5;
}
if(str.equals("6")){
return 6;
}
if(str.equals("7")){
return 7;
}
return 0;
}
public static boolean differSetTimeAndNowTime(long setTime)
{
if(setTime >= getNowTimeMinuties()){
return true;
}else{
return false;
}
}
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;
}
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));
}
}
public static boolean differSetTimeAndNowTime(long setTime)
{
if(setTime >= getNowTimeMinuties()){
return true;
}else{
return false;
}
}
public static long getNowTimeMinuties()
{
return System.currentTimeMillis();
}
public static long getDifferMillis(int differDays)
{
return differDays * 24 * 60 * 60 * 1000;
}
}
//接收
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String alarm_id=intent.getExtras().getString("alarm_id");
Intent alaramIntent = new Intent(context, BabyPlanAlarmAgainSetting.class);
alaramIntent.putExtra("alarm_id", alarm_id);
alaramIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(alaramIntent);
}
public class BabyPlanAlarmAgainSetting extends BaseActivity_dqq {
Intent alermIntent = getIntent();
String alarm_id= alermIntent.getStringExtra("alarm_id");
SQLiteDatabase db=helper.getReadableDatabase();
Cursor cursor = db.query("huodong", new String[]{"_id","monToFriAlarm"}, "_id=?", new String[]{String.valueOf(alarm_id)}, null, null, null,null);
if(cursor.moveToNext()){
monToFriAlarm = cursor.getString(cursor.getColumnIndex("monToFriAlarm"));
}
String[] setStr = monToFriAlarm.split(",");
int[] dayOfNum = UtilDqq.getDayOfNum(setStr);
setDay = UtilDqq.getResultDifferDay1(dayOfNum, nowDay);
int differDay = UtilDqq.compareDayNowToNext(nowDay, setDay);
if (differDay == 0) {
am.set(AlarmManager.RTC_WAKEUP,
UtilDqq.getNowTimeMinuties()
+ UtilDqq.getDifferMillis(7), sender);
} else {
am.set(AlarmManager.RTC_WAKEUP,
UtilDqq.getNowTimeMinuties()
+ UtilDqq.getDifferMillis(differDay),
sender);
}
new AlertDialog.Builder(this)
.setTitle("闹铃")
.setMessage("闹铃时间到!!!")
.setPositiveButton("我知道了", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
player.stop();
finish();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
player.stop();
finish();
}
}).show();
}
}