demo闹钟

该博客分享了一个Android闹钟程序,提供了源码下载链接。详细展示了程序各界面,如开始界面、设置时间和重复的dialog界面等。还给出了MainActivity.java、AlarmClockView.java等类的代码,以及多个布局文件和value目录下文件的内容,同时提醒广播要在Manifest中注册。

最近做闹钟,所以自己写了个Demo版本,这个程序是用listview单独的类来实现的,和activity类分开来实现的!这个是用数据库进行更新的,当闹钟设置后,闹钟图片变成闹钟的样子,闹钟取消后,图片变成灰色的闹钟,这个是用ListView来实现数据库更新数据的!然后弹对话框来实现时间的设置和周几重复的功能,这个功能能实现,我测试了!正确无误!需要注意的地方有两个:listview每次滑动的时候,记得设置背景为透明,mAlarmListView.setCacheColorHint(0);另一个是利用Intent传递广播的Intent的时候,传参数的时候,记得设置PendingIntent sender=PendingIntent.getBroadcast(context,0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);的PendingIntent.FLAG_UPDATE_CURRENT,为了让每次启动PendingIntent进行更新!这两点要注意一下,我在编写的时候就是遇到这两个问题了!另外就是算法的判断!感觉好可以赞一个,支持我的原创!

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

http://download.youkuaiyun.com/source/3572215

转载请标明出处:

http://blog.youkuaiyun.com/wdaming1986/article/details/6745655

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

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

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

下面看代码:

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

  1. packagecom.cn.daming;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. importandroid.widget.LinearLayout;
  5. publicclassMainActivityextendsActivity{
  6. privateLinearLayoutmLinearLayout;
  7. @Override
  8. publicvoidonCreate(BundlesavedInstanceState){
  9. super.onCreate(savedInstanceState);
  10. this.setContentView(R.layout.main);
  11. mLinearLayout=(LinearLayout)findViewById(R.id.box);
  12. newAlarmClockView(this,this,mLinearLayout);
  13. }
  14. }
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的类:

  1. packagecom.cn.daming;
  2. importjava.util.ArrayList;
  3. importjava.util.Calendar;
  4. importjava.util.List;
  5. importandroid.app.AlarmManager;
  6. importandroid.app.AlertDialog;
  7. importandroid.app.PendingIntent;
  8. importandroid.app.TimePickerDialog;
  9. importandroid.content.Context;
  10. importandroid.content.DialogInterface;
  11. importandroid.content.Intent;
  12. importandroid.database.Cursor;
  13. importandroid.util.Log;
  14. importandroid.view.LayoutInflater;
  15. importandroid.view.View;
  16. importandroid.widget.AdapterView;
  17. importandroid.widget.Button;
  18. importandroid.widget.CheckBox;
  19. importandroid.widget.CompoundButton;
  20. importandroid.widget.CompoundButton.OnCheckedChangeListener;
  21. importandroid.widget.LinearLayout;
  22. importandroid.widget.ListView;
  23. importandroid.widget.TextView;
  24. importandroid.widget.TimePicker;
  25. importandroid.widget.Toast;
  26. publicclassAlarmClockViewextendsView{
  27. privateMainActivityactivity;
  28. privateLinearLayoutmLinearLayout;
  29. privateContextcontext;
  30. privateDataBaseHelperdbHelper;
  31. privateCursorcursor;
  32. privateListViewmAlarmListView;
  33. privateList<String>ids;
  34. privateList<String>times;
  35. privateList<String>repeats;
  36. privateList<String>isopens;
  37. privateList<String>kinds;
  38. privateAlarmClockAdapteralarmAdapter;
  39. Calendarc=Calendar.getInstance();
  40. TextViewtime1TextView=null;
  41. TextViewtime2TextView=null;
  42. ButtonsetTimeButton1=null;
  43. ButtonsetTimeButton2=null;
  44. TextViewrepeat1TextView=null;
  45. TextViewrepeat2TextView=null;
  46. ButtonrepeatButton1=null;
  47. ButtonrepeatButton2=null;
  48. CheckBoxtime1CheckBox=null;
  49. CheckBoxtime2CheckBox=null;
  50. StringtmpS1="目前无设置";
  51. StringrepeatString1="目前无设置";
  52. StringtmpS2="目前无设置";
  53. StringrepeatString2="目前无设置";
  54. booleanisOpenInt1=false;
  55. booleanisOpenInt2=false;
  56. StringisOpentime1=null;
  57. StringisOpentime2=null;
  58. booleanisOpenAlarm=false;
  59. CheckBoxisOpenCheckBox;
  60. int[]repeatArray1={0,0,0,0,0,0,0};
  61. int[]repeatArray2={0,0,0,0,0,0,0};
  62. booleanrepeat_1_1=false;
  63. booleanrepeat_1_2=false;
  64. booleanrepeat_1_3=false;
  65. booleanrepeat_1_4=false;
  66. booleanrepeat_1_5=false;
  67. booleanrepeat_1_6=false;
  68. booleanrepeat_1_7=false;
  69. booleanrepeat_2_1=false;
  70. booleanrepeat_2_2=false;
  71. booleanrepeat_2_3=false;
  72. booleanrepeat_2_4=false;
  73. booleanrepeat_2_5=false;
  74. booleanrepeat_2_6=false;
  75. booleanrepeat_2_7=false;
  76. publicAlarmClockView(finalContextcontext,MainActivityactivity,LinearLayoutlinearLayout){
  77. super(context);
  78. this.context=context;
  79. this.activity=activity;
  80. this.mLinearLayout=linearLayout;
  81. ViewalarmView=View.inflate(context,R.layout.alarm_listview,null);
  82. mLinearLayout.addView(alarmView);
  83. mAlarmListView=(ListView)alarmView.findViewById(R.id.alarm_list);
  84. mAlarmListView.setCacheColorHint(0);
  85. dbHelper=newDataBaseHelper(context);
  86. refreshDBHelper();
  87. mAlarmListView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
  88. publicvoidonItemClick(AdapterView<?>arg0,Viewv,intposition,
  89. longarg3){
  90. showAlarmDialog(position);
  91. }
  92. });
  93. }
  94. publicvoidrefreshDBHelper()
  95. {
  96. cursor=dbHelper.selectAlarmColock();
  97. ids=newArrayList<String>();
  98. times=newArrayList<String>();
  99. repeats=newArrayList<String>();
  100. isopens=newArrayList<String>();
  101. kinds=newArrayList<String>();
  102. intcount=cursor.getCount();
  103. if(count==0){
  104. String[]tempStr=newString[4];
  105. for(inti=1;i<=2;i++){
  106. dbHelper.insertAlarmColock(tempStr);
  107. }
  108. intcount2=cursor.getCount();
  109. if(count2>0){
  110. for(inti=0;i<count2;i++){
  111. cursor.moveToPosition(i);
  112. ids.add(cursor.getString(0));
  113. times.add(cursor.getString(1));
  114. repeats.add(cursor.getString(2));
  115. isopens.add(cursor.getString(3));
  116. kinds.add(cursor.getString(4));
  117. }
  118. }
  119. cursor.close();
  120. dbHelper.close();
  121. refreshDBHelper();
  122. Toast.makeText(context,R.string.not_dbcursor_values,Toast.LENGTH_SHORT).show();
  123. }
  124. elseif(count>0){
  125. for(inti=0;i<count;i++){
  126. cursor.moveToPosition(i);
  127. ids.add(cursor.getString(0));
  128. times.add(cursor.getString(1));
  129. repeats.add(cursor.getString(2));
  130. isopens.add(cursor.getString(3));
  131. kinds.add(cursor.getString(4));
  132. }
  133. }
  134. alarmAdapter=newAlarmClockAdapter(context,ids,times,repeats,isopens,kinds);
  135. mAlarmListView.setAdapter(alarmAdapter);
  136. cursor.close();
  137. dbHelper.close();
  138. }
  139. publicvoidshowAlarmDialog(intposition){
  140. dbHelper=newDataBaseHelper(context);
  141. cursor=dbHelper.selectAlarmColock();
  142. intcount=cursor.getCount();
  143. if(position==0){
  144. LayoutInflaterfactory=LayoutInflater.from(context);
  145. finalViewalarm1View=factory.inflate(R.layout.time_repeat_dialog,null);
  146. time1TextView=(TextView)alarm1View.findViewById(R.id.text);
  147. setTimeButton1=(Button)alarm1View.findViewById(R.id.mButton);
  148. repeat1TextView=(TextView)alarm1View.findViewById(R.id.repeattext);
  149. repeatButton1=(Button)alarm1View.findViewById(R.id.repeatButton);
  150. time1CheckBox=(CheckBox)alarm1View.findViewById(R.id.isopen_check);
  151. StringisOpen1="关";
  152. if(count==2){
  153. for(inti=0;i<count;i++){
  154. if(i==0){
  155. cursor.moveToPosition(i);
  156. if(cursor.getString(1)==null){
  157. time1TextView.setText(tmpS1);
  158. }else{
  159. time1TextView.setText(cursor.getString(1));
  160. tmpS1=cursor.getString(1);
  161. }
  162. if((cursor.getString(2))==null){
  163. repeat1TextView.setText(repeatString1);
  164. }else{
  165. repeat1TextView.setText(cursor.getString(2));
  166. repeatString1=cursor.getString(2);
  167. }
  168. isOpen1=cursor.getString(3);
  169. if(isOpen1!=null){
  170. if(isOpen1.equals("开")){
  171. time1CheckBox.setChecked(true);
  172. isOpenInt1=true;
  173. }else{
  174. time1CheckBox.setChecked(false);
  175. isOpenInt1=false;
  176. }
  177. }
  178. }
  179. }
  180. }
  181. time1CheckBox.setOnCheckedChangeListener(newOnCheckedChangeListener(){
  182. publicvoidonCheckedChanged(CompoundButtonarg0,booleanarg1){
  183. if(arg0.isChecked()){
  184. isOpenInt1=true;
  185. }else{
  186. isOpenInt1=false;
  187. }
  188. }
  189. });
  190. setTimeButton1.setOnClickListener(newOnClickListener(){
  191. publicvoidonClick(Viewarg0){
  192. c.setTimeInMillis(System.currentTimeMillis());
  193. intmHour=c.get(Calendar.HOUR_OF_DAY);
  194. intmMinute=c.get(Calendar.MINUTE);
  195. intmDay=c.get(Calendar.DAY_OF_WEEK);
  196. newTimePickerDialog(context,
  197. newTimePickerDialog.OnTimeSetListener()
  198. {
  199. publicvoidonTimeSet(TimePickerview,inthourOfDay,
  200. intminute)
  201. {
  202. c.setTimeInMillis(System.currentTimeMillis());
  203. c.set(Calendar.HOUR_OF_DAY,hourOfDay);
  204. c.set(Calendar.MINUTE,minute);
  205. c.set(Calendar.SECOND,0);
  206. c.set(Calendar.MILLISECOND,0);
  207. tmpS1=format(hourOfDay)+":"+format(minute);
  208. time1TextView.setText(tmpS1);
  209. Toast.makeText(context,
  210. "设置闹钟时间为"+tmpS1,
  211. Toast.LENGTH_SHORT).show();
  212. }
  213. },mHour,mMinute,true).show();
  214. }
  215. });
  216. repeatButton1.setOnClickListener(newOnClickListener(){
  217. publicvoidonClick(Viewarg0){
  218. //TODOAuto-generatedmethodstub
  219. repeatString1="";
  220. newAlertDialog.Builder(context)
  221. .setTitle(R.string.alert_dialog_multi_choice)
  222. .setMultiChoiceItems(R.array.select_dialog_items,
  223. newboolean[]{false,false,false,false,false,false,false},
  224. newDialogInterface.OnMultiChoiceClickListener(){
  225. publicvoidonClick(DialogInterfacedialog,intwhichButton,
  226. booleanisChecked){
  227. /*Userclickedonacheckboxdosomestuff*/
  228. switch(whichButton){
  229. case0:if(isChecked){
  230. repeatArray1[0]=1;
  231. }else{
  232. repeatArray1[0]=0;
  233. }
  234. break;
  235. case1:if(isChecked){
  236. repeatArray1[1]=1;
  237. }else{
  238. repeatArray1[1]=0;
  239. }
  240. break;
  241. case2:if(isChecked){
  242. repeatArray1[2]=1;
  243. }else{
  244. repeatArray1[2]=0;
  245. }
  246. break;
  247. case3:if(isChecked){
  248. repeatArray1[3]=1;
  249. }else{
  250. repeatArray1[3]=0;
  251. }
  252. break;
  253. case4:if(isChecked){
  254. repeatArray1[4]=1;
  255. }else{
  256. repeatArray1[4]=0;
  257. }
  258. break;
  259. case5:if(isChecked){
  260. repeatArray1[5]=1;
  261. }else{
  262. repeatArray1[5]=0;
  263. }
  264. break;
  265. case6:if(isChecked){
  266. repeatArray1[6]=1;
  267. }else{
  268. repeatArray1[6]=0;
  269. }
  270. break;
  271. default:break;
  272. }
  273. }
  274. })
  275. .setPositiveButton(R.string.alert_dialog_ok,newDialogInterface.OnClickListener(){
  276. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  277. if(repeatArray1[0]==1){
  278. repeatString1+="周一"+",";
  279. repeat_1_1=true;
  280. }else{
  281. repeat_1_1=false;
  282. }
  283. if(repeatArray1[1]==1){
  284. repeatString1+="周二"+",";
  285. repeat_1_2=true;
  286. }else{
  287. repeat_1_2=false;
  288. }
  289. if(repeatArray1[2]==1){
  290. repeatString1+="周三"+",";
  291. repeat_1_3=true;
  292. }else{
  293. repeat_1_3=false;
  294. }
  295. if(repeatArray1[3]==1){
  296. repeatString1+="周四"+",";
  297. repeat_1_4=true;
  298. }else{
  299. repeat_1_4=false;
  300. }
  301. if(repeatArray1[4]==1){
  302. repeatString1+="周五"+",";
  303. repeat_1_5=true;
  304. }else{
  305. repeat_1_5=false;
  306. }
  307. if(repeatArray1[5]==1){
  308. repeatString1+="周六"+",";
  309. repeat_1_6=true;
  310. }else{
  311. repeat_1_6=false;
  312. }
  313. if(repeatArray1[6]==1){
  314. repeatString1+="周日";
  315. repeat_1_7=true;
  316. }else{
  317. repeat_1_7=false;
  318. }
  319. if(!(repeat_1_1||repeat_1_2||repeat_1_3||repeat_1_4||
  320. repeat_1_5||repeat_1_6||repeat_1_7)){
  321. repeatString1=("无重复");
  322. }
  323. repeat1TextView.setText(repeatString1);
  324. for(inti=0;i<repeatArray1.length;i++){
  325. repeatArray1[i]=0;
  326. }
  327. }
  328. })
  329. .setNegativeButton(R.string.alert_dialog_cancel,newDialogInterface.OnClickListener(){
  330. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  331. /*UserclickedNosodosomestuff*/
  332. }
  333. })
  334. .show();
  335. }
  336. });
  337. //showAlertDialog
  338. newAlertDialog.Builder(context)
  339. .setIcon(R.drawable.alarm_dialog)
  340. .setTitle(R.string.alarm_dialog_title)
  341. .setView(alarm1View)
  342. .setPositiveButton(R.string.alert_dialog_ok,newDialogInterface.OnClickListener(){
  343. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  344. if(isOpenInt1){
  345. isOpentime1="开";
  346. Intentintent1=newIntent(context,CallAlarm.class);
  347. intent1.putExtra("RESULT","alarm1");
  348. PendingIntentsender=PendingIntent.getBroadcast(
  349. context,0,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
  350. AlarmManageram;
  351. am=(AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
  352. intnowDay=Contants.getNowWeek();
  353. intsetDay=0;
  354. if(repeatString1.equals("目前无设置"))
  355. {
  356. if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
  357. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
  358. }
  359. else{
  360. Toast.makeText(context,R.string.not_time_right,Toast.LENGTH_SHORT);
  361. }
  362. }
  363. if(!(repeatString1.equals("目前无设置"))){
  364. String[]setStr=repeatString1.split(",");
  365. int[]dayOfNum=Contants.getDayOfNum(setStr);
  366. setDay=Contants.getResultDifferDay(dayOfNum,nowDay);
  367. intdifferDay=Contants.compareDayNowToNext(nowDay,setDay);
  368. if(differDay==0){
  369. if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
  370. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
  371. }else{
  372. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis()+Contants.getDifferMillis(7),sender);
  373. }
  374. }else{
  375. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis()+Contants.getDifferMillis(differDay),sender);
  376. }
  377. }
  378. }else{
  379. isOpentime1="关";
  380. Intentintent=newIntent(context,CallAlarm.class);
  381. PendingIntentsender=PendingIntent.getBroadcast(
  382. context,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
  383. AlarmManageram;
  384. am=(AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
  385. am.cancel(sender);
  386. Toast.makeText(context,R.string.alarm_delete1,
  387. Toast.LENGTH_SHORT).show();
  388. }
  389. String[]temStr=newString[7];
  390. temStr[0]=tmpS1;
  391. temStr[1]=repeatString1;
  392. temStr[2]=isOpentime1;
  393. dbHelper.updateAlarmColock(1+"",temStr);
  394. refreshDBHelper();
  395. }
  396. })
  397. .setNegativeButton(R.string.alert_dialog_cancel,newDialogInterface.OnClickListener(){
  398. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  399. refreshDBHelper();
  400. }
  401. })
  402. .create().show();
  403. Log.v("wangxianming","thisisclickItem1");
  404. }
  405. elseif(position==1){
  406. LayoutInflaterfactory=LayoutInflater.from(context);
  407. finalViewalarm1View=factory.inflate(R.layout.time_repeat_dialog,null);
  408. time2TextView=(TextView)alarm1View.findViewById(R.id.text);
  409. setTimeButton2=(Button)alarm1View.findViewById(R.id.mButton);
  410. repeat2TextView=(TextView)alarm1View.findViewById(R.id.repeattext);
  411. repeatButton2=(Button)alarm1View.findViewById(R.id.repeatButton);
  412. time2CheckBox=(CheckBox)alarm1View.findViewById(R.id.isopen_check);
  413. StringisOpen2="关";
  414. if(count==2){
  415. for(inti=0;i<count;i++){
  416. if(i==1){
  417. cursor.moveToPosition(i);
  418. if(cursor.getString(1)==null){
  419. time2TextView.setText(tmpS2);
  420. }else{
  421. time2TextView.setText(cursor.getString(1));
  422. tmpS2=cursor.getString(1);
  423. }
  424. if((cursor.getString(2))==null){
  425. repeat2TextView.setText(repeatString2);
  426. }else{
  427. repeat2TextView.setText(cursor.getString(2));
  428. repeatString2=cursor.getString(2);
  429. }
  430. isOpen2=cursor.getString(3);
  431. if(isOpen2!=null){
  432. if(isOpen2.equals("开")){
  433. time2CheckBox.setChecked(true);
  434. isOpenInt2=true;
  435. }else{
  436. time2CheckBox.setChecked(false);
  437. isOpenInt2=false;
  438. }
  439. }
  440. }
  441. }
  442. }
  443. time2CheckBox.setOnCheckedChangeListener(newOnCheckedChangeListener(){
  444. publicvoidonCheckedChanged(CompoundButtonarg0,booleanarg1){
  445. //TODOAuto-generatedmethodstub
  446. if(arg0.isChecked()){
  447. isOpenInt2=true;
  448. }else{
  449. isOpenInt2=false;
  450. }
  451. }
  452. });
  453. setTimeButton2.setOnClickListener(newOnClickListener(){
  454. publicvoidonClick(Viewarg0){
  455. //TODOAuto-generatedmethodstub
  456. c.setTimeInMillis(System.currentTimeMillis());
  457. intmHour=c.get(Calendar.HOUR_OF_DAY);
  458. intmMinute=c.get(Calendar.MINUTE);
  459. intmDay=c.get(Calendar.DAY_OF_WEEK);
  460. newTimePickerDialog(context,
  461. newTimePickerDialog.OnTimeSetListener()
  462. {
  463. publicvoidonTimeSet(TimePickerview,inthourOfDay,
  464. intminute)
  465. {
  466. c.setTimeInMillis(System.currentTimeMillis());
  467. c.set(Calendar.HOUR_OF_DAY,hourOfDay);
  468. c.set(Calendar.MINUTE,minute);
  469. c.set(Calendar.SECOND,0);
  470. c.set(Calendar.MILLISECOND,0);
  471. tmpS2=format(hourOfDay)+":"+format(minute);
  472. time2TextView.setText(tmpS2);
  473. Toast.makeText(context,R.string.alarm_set2+tmpS2,Toast.LENGTH_SHORT).show();
  474. }
  475. },mHour,mMinute,true).show();
  476. }
  477. });
  478. repeatButton2.setOnClickListener(newOnClickListener(){
  479. publicvoidonClick(Viewarg0){
  480. repeatString2="";
  481. newAlertDialog.Builder(context)
  482. .setTitle(R.string.alert_dialog_multi_choice)
  483. .setMultiChoiceItems(R.array.select_dialog_items,
  484. newboolean[]{false,false,false,false,false,false,false},
  485. newDialogInterface.OnMultiChoiceClickListener(){
  486. publicvoidonClick(DialogInterfacedialog,intwhichButton,
  487. booleanisChecked){
  488. /*Userclickedonacheckboxdosomestuff*/
  489. switch(whichButton){
  490. case0:if(isChecked){
  491. repeatArray2[0]=1;
  492. }else{
  493. repeatArray2[0]=0;
  494. }
  495. break;
  496. case1:if(isChecked){
  497. repeatArray2[1]=1;
  498. }else{
  499. repeatArray2[1]=0;
  500. }
  501. break;
  502. case2:if(isChecked){
  503. repeatArray2[2]=1;
  504. }else{
  505. repeatArray2[2]=0;
  506. }
  507. break;
  508. case3:if(isChecked){
  509. repeatArray2[3]=1;
  510. }else{
  511. repeatArray2[3]=0;
  512. }
  513. break;
  514. case4:if(isChecked){
  515. repeatArray2[4]=1;
  516. }else{
  517. repeatArray2[4]=0;
  518. }
  519. break;
  520. case5:if(isChecked){
  521. repeatArray2[5]=1;
  522. }else{
  523. repeatArray2[5]=0;
  524. }
  525. break;
  526. case6:if(isChecked){
  527. repeatArray2[6]=1;
  528. }else{
  529. repeatArray2[6]=0;
  530. }
  531. break;
  532. default:break;
  533. }
  534. }
  535. })
  536. .setPositiveButton(R.string.alert_dialog_ok,newDialogInterface.OnClickListener(){
  537. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  538. if(repeatArray2[0]==1){
  539. repeatString2+="周一"+",";
  540. repeat_2_1=true;
  541. }else{
  542. repeat_2_1=false;
  543. }
  544. if(repeatArray2[1]==1){
  545. repeatString2+="周二"+",";
  546. repeat_2_2=true;
  547. }else{
  548. repeat_2_2=false;
  549. }
  550. if(repeatArray2[2]==1){
  551. repeatString2+="周三"+",";
  552. repeat_2_3=true;
  553. }else{
  554. repeat_2_3=false;
  555. }
  556. if(repeatArray2[3]==1){
  557. repeatString2+="周四"+",";
  558. repeat_2_4=true;
  559. }else{
  560. repeat_2_4=false;
  561. }
  562. if(repeatArray2[4]==1){
  563. repeatString2+="周五"+",";
  564. repeat_2_5=true;
  565. }else{
  566. repeat_1_5=false;
  567. }
  568. if(repeatArray2[5]==1){
  569. repeatString2+="周六"+",";
  570. repeat_2_6=true;
  571. }else{
  572. repeat_2_6=false;
  573. }
  574. if(repeatArray2[6]==1){
  575. repeatString2+="周日";
  576. repeat_2_7=true;
  577. }else{
  578. repeat_2_7=false;
  579. }
  580. if(!(repeat_2_1||repeat_2_2||repeat_2_3||repeat_2_4||
  581. repeat_2_5||repeat_2_6||repeat_2_7)){
  582. repeatString2=("无设置");
  583. }
  584. repeat2TextView.setText(repeatString2);
  585. for(inti=0;i<repeatArray1.length;i++){
  586. repeatArray2[i]=0;
  587. }
  588. }
  589. })
  590. .setNegativeButton(R.string.alert_dialog_cancel,newDialogInterface.OnClickListener(){
  591. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  592. /*UserclickedNosodosomestuff*/
  593. }
  594. })
  595. .show();
  596. }
  597. });
  598. //showDialog
  599. newAlertDialog.Builder(context)
  600. .setIcon(R.drawable.alarm_dialog)
  601. .setTitle(R.string.alarm_dialog_title)
  602. .setView(alarm1View)
  603. .setPositiveButton(R.string.alert_dialog_ok,newDialogInterface.OnClickListener(){
  604. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  605. if(isOpenInt2){
  606. isOpentime2="开";
  607. Intentintent2=newIntent(context,CallAlarm.class);
  608. intent2.putExtra("RESULT","alarm2");
  609. PendingIntentsender=PendingIntent.getBroadcast(
  610. context,1,intent2,PendingIntent.FLAG_UPDATE_CURRENT);
  611. AlarmManageram;
  612. am=(AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
  613. intnowDay=Contants.getNowWeek();
  614. intsetDay=0;
  615. if(repeatString2.equals("目前无设置"))
  616. {
  617. if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
  618. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
  619. }
  620. else{
  621. Toast.makeText(context,R.string.not_time_right,Toast.LENGTH_SHORT);
  622. }
  623. }
  624. if(!(repeatString2.equals("目前无设置"))){
  625. String[]setStr=repeatString2.split(",");
  626. int[]dayOfNum=Contants.getDayOfNum(setStr);
  627. setDay=Contants.getResultDifferDay(dayOfNum,nowDay);
  628. intdifferDay=Contants.compareDayNowToNext(nowDay,setDay);
  629. if(differDay==0){
  630. if(Contants.differSetTimeAndNowTime(c.getTimeInMillis())){
  631. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),sender);
  632. }else{
  633. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis()+Contants.getDifferMillis(7),sender);
  634. }
  635. }else{
  636. am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis()+Contants.getDifferMillis(differDay),sender);
  637. }
  638. }
  639. }else{
  640. isOpentime2="关";
  641. Intentintent=newIntent(context,CallAlarm.class);
  642. intent.putExtra("RESULT","cancel");
  643. PendingIntentsender=PendingIntent.getBroadcast(
  644. context,1,intent,PendingIntent.FLAG_UPDATE_CURRENT);
  645. AlarmManageram;
  646. am=(AlarmManager)activity.getSystemService(context.ALARM_SERVICE);
  647. am.cancel(sender);
  648. Toast.makeText(context,R.string.alarm_delete2,
  649. Toast.LENGTH_SHORT).show();
  650. }
  651. String[]temStr=newString[7];
  652. temStr[0]=tmpS2;
  653. temStr[1]=repeatString2;
  654. temStr[2]=isOpentime2;
  655. dbHelper.updateAlarmColock(2+"",temStr);
  656. refreshDBHelper();
  657. }
  658. })
  659. .setNegativeButton(R.string.alert_dialog_cancel,newDialogInterface.OnClickListener(){
  660. publicvoidonClick(DialogInterfacedialog,intwhichButton){
  661. refreshDBHelper();
  662. }
  663. })
  664. .create().show();
  665. }
  666. cursor.close();
  667. dbHelper.close();
  668. }
  669. privateStringformat(intx)
  670. {
  671. Strings=""+x;
  672. if(s.length()==1)s="0"+s;
  673. returns;
  674. }
  675. }
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类,适配器的类:

  1. packagecom.cn.daming;
  2. importjava.util.List;
  3. importandroid.content.Context;
  4. importandroid.view.LayoutInflater;
  5. importandroid.view.View;
  6. importandroid.view.ViewGroup;
  7. importandroid.widget.BaseAdapter;
  8. importandroid.widget.ImageView;
  9. importandroid.widget.TextView;
  10. publicclassAlarmClockAdapterextendsBaseAdapter{
  11. privateLayoutInflaterlayoutInflater;
  12. privateContextcontext;
  13. privateList<String>alarm_ids;
  14. privateList<String>alarm_times;
  15. privateList<String>alarm_repeats;
  16. privateList<String>alarm_isopens;
  17. privateList<String>alarm_kinds;
  18. ZuJianzuJian;
  19. publicAlarmClockAdapter(Contextcontext,List<String>ids,List<String>times,List<String>repeats,
  20. List<String>isopens,List<String>kinds){
  21. this.context=context;
  22. this.alarm_ids=ids;
  23. this.alarm_times=times;
  24. this.alarm_repeats=repeats;
  25. this.alarm_isopens=isopens;
  26. this.alarm_kinds=kinds;
  27. this.layoutInflater=LayoutInflater.from(context);
  28. }
  29. publicintgetCount(){
  30. returnalarm_times.size();
  31. }
  32. publicObjectgetItem(intposition){
  33. returnalarm_times.get(position);
  34. }
  35. publiclonggetItemId(intposition){
  36. returnposition;
  37. }
  38. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  39. zuJian=newZuJian();
  40. if(convertView==null){
  41. convertView=layoutInflater.inflate(R.layout.alarm_clock,null);
  42. zuJian.alarmTitle=(TextView)convertView.findViewById(R.id.alarm_title);
  43. zuJian.alarmTimeView=(TextView)convertView.findViewById(R.id.alarm_time);
  44. zuJian.repeatAlarmView=(TextView)convertView.findViewById(R.id.alarm_repeat_time);
  45. zuJian.showISOpenView=(ImageView)convertView.findViewById(R.id.show_open_close);
  46. convertView.setTag(zuJian);
  47. }else{
  48. zuJian=(ZuJian)convertView.getTag();
  49. }
  50. if(alarm_kinds.get(position)==null||alarm_kinds.get(position)==""){
  51. if(position==0){
  52. zuJian.alarmTitle.setText("大明闹钟一");
  53. }
  54. if(position==1){
  55. zuJian.alarmTitle.setText("大明闹钟二");
  56. }
  57. }else{
  58. zuJian.alarmTitle.setText(alarm_kinds.get(position));
  59. }
  60. if(alarm_times.get(position)==null||alarm_times.get(position)==""){
  61. zuJian.alarmTimeView.setText("目前无设置");
  62. }else{
  63. zuJian.alarmTimeView.setText(alarm_times.get(position));
  64. }
  65. if(alarm_repeats.get(position)==null||alarm_repeats.get(position)==""){
  66. zuJian.repeatAlarmView.setText("目前无设置");
  67. }else{
  68. zuJian.repeatAlarmView.setText(alarm_repeats.get(position));
  69. }
  70. if(alarm_isopens.get(position)==null||alarm_isopens.get(position)==""){
  71. ((ImageView)zuJian.showISOpenView).setBackgroundResource(R.drawable.alarm_dialog);
  72. }else{
  73. if(alarm_isopens.get(position).equals("开")){
  74. ((ImageView)zuJian.showISOpenView).setBackgroundResource(R.drawable.clock);
  75. }
  76. if(alarm_isopens.get(position).equals("关")){
  77. ((ImageView)zuJian.showISOpenView).setBackgroundResource(R.drawable.alarm_dialog);
  78. }
  79. }
  80. returnconvertView;
  81. }
  82. finalclassZuJian{
  83. publicTextViewalarmTitle;
  84. publicTextViewalarmTimeView;
  85. publicTextViewrepeatAlarmView;
  86. publicImageViewshowISOpenView;
  87. }
  88. }
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的类:

  1. packagecom.cn.daming;
  2. /*importclass*/
  3. importandroid.content.BroadcastReceiver;
  4. importandroid.content.Context;
  5. importandroid.content.Intent;
  6. importandroid.os.Bundle;
  7. importandroid.util.Log;
  8. /*AlarmReceiver*/
  9. publicclassCallAlarmextendsBroadcastReceiver
  10. {
  11. @Override
  12. publicvoidonReceive(finalContextcontext,Intentintent)
  13. {
  14. StringgetStr=intent.getExtras().getString("RESULT");
  15. Log.v("wangxianming","RESULT="+getStr);
  16. IntentalaramIntent=newIntent(context,AlarmAgainSetting.class);
  17. BundlebundleRet=newBundle();
  18. bundleRet.putString("STR_RESULT",getStr);
  19. alaramIntent.putExtras(bundleRet);
  20. alaramIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  21. context.startActivity(alaramIntent);
  22. }
  23. }
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类,工具类:

  1. packagecom.cn.daming;
  2. importjava.text.SimpleDateFormat;
  3. importjava.util.ArrayList;
  4. importjava.util.Calendar;
  5. importjava.util.Date;
  6. importjava.util.HashMap;
  7. importjava.util.Map;
  8. importjava.util.Random;
  9. publicclassContants{
  10. //repeateddayofweekdefine
  11. publicstaticMap<String,Integer>mapWeek=newHashMap<String,Integer>();
  12. publicstaticvoidaddMapWeek(){
  13. mapWeek.put("周一",1);
  14. mapWeek.put("周二",2);
  15. mapWeek.put("周三",3);
  16. mapWeek.put("周四",4);
  17. mapWeek.put("周五",5);
  18. mapWeek.put("周六",6);
  19. mapWeek.put("周日",7);
  20. mapWeek.put("无重复",0);
  21. }
  22. publicstaticintgetMapWeek(Stringstr){
  23. Contants.addMapWeek();
  24. intdayOfMapWeek=0;
  25. if(str!=null){
  26. dayOfMapWeek=mapWeek.get(str);
  27. }
  28. returndayOfMapWeek;
  29. }
  30. publicstaticString[]getDatetimeString(){
  31. Datedate=newDate();
  32. String[]tempStr=newString[2];
  33. SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
  34. Stringstr=format.format(date);
  35. tempStr[0]=str.substring(0,10);
  36. tempStr[1]=str.substring(11,str.length());
  37. returntempStr;
  38. }
  39. publicstaticlonggetNowTimeMinuties()
  40. {
  41. returnSystem.currentTimeMillis();
  42. }
  43. publicstaticbooleandifferSetTimeAndNowTime(longsetTime)
  44. {
  45. if(setTime>=getNowTimeMinuties()){
  46. returntrue;
  47. }else{
  48. returnfalse;
  49. }
  50. }
  51. publicstaticlonggetDifferMillis(intdifferDays)
  52. {
  53. returndifferDays*24*60*60*1000;
  54. }
  55. //comparenowDaytonextDay
  56. publicstaticintcompareDayNowToNext(intnowDay,intnextDay){
  57. if(nextDay>nowDay){
  58. return(nextDay-nowDay);
  59. }elseif(nextDay==nowDay){
  60. return0;
  61. }else{
  62. return(7-(nowDay-nextDay));
  63. }
  64. }
  65. //turnthenowdaytoChina`sdayofWeek
  66. publicstaticMap<String,Integer>nowWeek=newHashMap<String,Integer>();
  67. publicstaticvoidaddNowWeek()
  68. {
  69. nowWeek.put("1",7);
  70. nowWeek.put("2",1);
  71. nowWeek.put("3",2);
  72. nowWeek.put("4",3);
  73. nowWeek.put("5",4);
  74. nowWeek.put("6",5);
  75. nowWeek.put("7",6);
  76. }
  77. publicstaticintgetNowWeek()
  78. {
  79. CalendarnowCal=Calendar.getInstance();
  80. DatenowDate=newDate(System.currentTimeMillis());
  81. nowCal.setTime(nowDate);
  82. intnowNum=nowCal.get(nowCal.DAY_OF_WEEK);
  83. StringnowNumStr=String.valueOf(nowNum);
  84. Contants.addNowWeek();
  85. intnowDayOfWeek=0;
  86. if(nowNumStr!=null){
  87. nowDayOfWeek=nowWeek.get(nowNumStr);
  88. }
  89. returnnowDayOfWeek;
  90. }
  91. publicstaticintgetSetDay(Stringstr)
  92. {
  93. if(str.equals("周一")){
  94. return1;
  95. }
  96. if(str.equals("周二")){
  97. return2;
  98. }
  99. if(str.equals("周三")){
  100. return3;
  101. }
  102. if(str.equals("周四")){
  103. return4;
  104. }
  105. if(str.equals("周五")){
  106. return5;
  107. }
  108. if(str.equals("周六")){
  109. return6;
  110. }
  111. if(str.equals("周日")){
  112. return7;
  113. }
  114. return0;
  115. }
  116. publicstaticint[]getDayOfNum(String[]str)
  117. {
  118. int[]dayOfInt=newint[str.length];
  119. for(inti=0;i<str.length;i++){
  120. dayOfInt[i]=getSetDay(str[i]);
  121. }
  122. returndayOfInt;
  123. }
  124. publicstaticintgetResultDifferDay(int[]in,intnowDay)
  125. {
  126. intresult=0;
  127. for(inti=0;i<in.length;i++){
  128. if(in[i]>=nowDay){
  129. result=in[i];
  130. break;
  131. }
  132. }
  133. if(result==0){
  134. result=in[0];
  135. }
  136. returnresult;
  137. }
  138. publicstaticintgetResultDifferDay1(int[]in,intnowDay)
  139. {
  140. intresult=0;
  141. for(inti=0;i<in.length;i++){
  142. if(in[i]>nowDay){
  143. result=in[i];
  144. break;
  145. }
  146. }
  147. if(result==0){
  148. result=in[0];
  149. }
  150. returnresult;
  151. }
  152. }
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类:

  1. packagecom.cn.daming;
  2. importandroid.content.ContentValues;
  3. importandroid.content.Context;
  4. importandroid.database.Cursor;
  5. importandroid.database.sqlite.SQLiteDatabase;
  6. importandroid.database.sqlite.SQLiteOpenHelper;
  7. importandroid.util.Log;
  8. publicclassDataBaseHelperextendsSQLiteOpenHelper{
  9. privatefinalstaticStringDATABASE_NAME="alarm_db";
  10. privatefinalstaticintDATABASE_VERSION=1;
  11. privatefinalstaticStringALARM_COLOCK_TABLE="alarmcolock";
  12. publicfinalstaticStringALARM_ID="_id";
  13. publicfinalstaticStringALARM_TIME="alarmtime";//alarmtime
  14. publicfinalstaticStringALARM_REPEAT="alarmrepeat";//alarmrepeateisornot
  15. publicfinalstaticStringALARM_ISOPEN="alarmisopen";//alarmopenis0rnot
  16. publicfinalstaticStringALARM_KIND="alarmkind";//alarmiskind(1isshuangseqiu,2isdaletou)
  17. publicfinalstaticStringALARM_SPARE1="alarmspare1";//spare1
  18. publicfinalstaticStringALARM_SPARE2="alarmspare2";//spare2
  19. publicfinalstaticStringALARM_SPARE3="alarmspare3";//spare3
  20. publicDataBaseHelper(Contextcontext){
  21. super(context,DATABASE_NAME,null,DATABASE_VERSION);
  22. }
  23. @Override
  24. publicvoidonCreate(SQLiteDatabasedb){
  25. Stringsql="createtable"+ALARM_COLOCK_TABLE+"("
  26. +ALARM_ID+"integerprimarykeyautoincrement,"
  27. +ALARM_TIME+"text,"
  28. +ALARM_REPEAT+"text,"
  29. +ALARM_ISOPEN+"text,"
  30. +ALARM_KIND+"text,"
  31. +ALARM_SPARE1+"text,"
  32. +ALARM_SPARE2+"text,"
  33. +ALARM_SPARE3+"text)";
  34. db.execSQL(sql);
  35. }
  36. @Override
  37. publicvoidonUpgrade(SQLiteDatabasedb,intarg1,intarg2){
  38. Stringsql="droptableifexists"+ALARM_COLOCK_TABLE;
  39. db.execSQL(sql);
  40. }
  41. //theactioninAlarmColocktable
  42. publiclonginsertAlarmColock(String[]strArray)
  43. {
  44. SQLiteDatabasedb=this.getWritableDatabase();
  45. ContentValuesconv=newContentValues();
  46. conv.put(ALARM_TIME,strArray[0]);
  47. conv.put(ALARM_REPEAT,strArray[1]);
  48. conv.put(ALARM_ISOPEN,strArray[2]);
  49. conv.put(ALARM_KIND,strArray[3]);
  50. returndb.insert(ALARM_COLOCK_TABLE,null,conv);
  51. }
  52. publicCursorselectAlarmColock(){
  53. SQLiteDatabasedb=this.getReadableDatabase();
  54. Cursorcursor=db.query(ALARM_COLOCK_TABLE,null,null,null,null,null,null);
  55. returncursor;
  56. }
  57. publicCursorgetAlarmColock(Stringid){
  58. SQLiteDatabasedb=this.getReadableDatabase();
  59. Stringwhere=ALARM_ID+"=?";
  60. String[]whereValues={id};
  61. Cursorcursor=db.query(ALARM_COLOCK_TABLE,null,where,whereValues,null,null,null);
  62. returncursor;
  63. }
  64. publicvoiddeleteAlarmColock(Stringid){
  65. SQLiteDatabasedb=this.getWritableDatabase();
  66. Stringwhere=ALARM_ID+"=?";
  67. String[]whereValues={id};
  68. db.delete(ALARM_COLOCK_TABLE,where,whereValues);
  69. }
  70. publicintupdateAlarmColock(Stringid,String[]strArray){
  71. SQLiteDatabasedb=this.getWritableDatabase();
  72. Stringwhere=ALARM_ID+"=?";
  73. String[]whereValues={id};
  74. ContentValuescv=newContentValues();
  75. cv.put(ALARM_TIME,strArray[0]);
  76. cv.put(ALARM_REPEAT,strArray[1]);
  77. cv.put(ALARM_ISOPEN,strArray[2]);
  78. cv.put(ALARM_KIND,strArray[3]);
  79. Log.v("wangxianming","cv:"+cv.get("ALARM_TIME")+cv.get("ALARM_REPEAT")+cv.get("ALARM_ISOPEN")+cv.get("ALARM_KIND"));
  80. returndb.update(ALARM_COLOCK_TABLE,cv,where,whereValues);
  81. }
  82. }
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类,闹钟重复设置的类:

  1. packagecom.cn.daming;
  2. importandroid.app.Activity;
  3. importandroid.app.AlarmManager;
  4. importandroid.app.AlertDialog;
  5. importandroid.app.PendingIntent;
  6. importandroid.content.DialogInterface;
  7. importandroid.content.Intent;
  8. importandroid.database.Cursor;
  9. importandroid.os.Bundle;
  10. importandroid.widget.Toast;
  11. publicclassAlarmAgainSettingextendsActivity{
  12. privateDataBaseHelperdbHelper;
  13. privateCursorcursor;
  14. IntentgetAlarmAgainSetting;
  15. @Override
  16. protectedvoidonCreate(BundlesavedInstanceState){
  17. super.onCreate(savedInstanceState);
  18. getAlarmAgainSetting=AlarmAgainSetting.this.getIntent();
  19. StringgetAlarmAgainSettingStr=getAlarmAgainSetting.getExtras().getString("STR_RESULT");
  20. dbHelper=newDataBaseHelper(this);
  21. if(getAlarmAgainSettingStr.equals("alarm1")){
  22. IntentagainIntent=newIntent(AlarmAgainSetting.this,CallAlarm.class);
  23. againIntent.putExtra("RESULT","alarm1");
  24. PendingIntentsender=PendingIntent.getBroadcast(
  25. AlarmAgainSetting.this,0,againIntent,PendingIntent.FLAG_UPDATE_CURRENT);
  26. AlarmManageram;
  27. am=(AlarmManager)getSystemService(ALARM_SERVICE);
  28. intnowDay=Contants.getNowWeek();
  29. intsetDay=0;
  30. cursor=dbHelper.selectAlarmColock();
  31. Stringstr1=null;
  32. intcount1=cursor.getCount();
  33. if(count1>0){
  34. for(inti=0;i<count1;i++){
  35. if(i==0){
  36. cursor.moveToPosition(i);
  37. str1=cursor.getString(2);
  38. }
  39. }
  40. }
  41. if(!(str1.equals("目前无设置"))){
  42. String[]setStr=str1.split(",");
  43. int[]dayOfNum=Contants.getDayOfNum(setStr);
  44. setDay=Contants.getResultDifferDay1(dayOfNum,nowDay);
  45. intdifferDay=Contants.compareDayNowToNext(nowDay,setDay);
  46. if(differDay==0){
  47. am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties()+Contants.getDifferMillis(7),sender);
  48. }else{
  49. am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties()+Contants.getDifferMillis(differDay),sender);
  50. }
  51. }
  52. }
  53. if(getAlarmAgainSettingStr.equals("alarm2")){
  54. /*allAlarm.class*/
  55. IntentagainIntent=newIntent(AlarmAgainSetting.this,CallAlarm.class);
  56. againIntent.putExtra("RESULT","alarm2");
  57. /*PendingIntent*/
  58. PendingIntentsender=PendingIntent.getBroadcast(
  59. AlarmAgainSetting.this,1,againIntent,PendingIntent.FLAG_UPDATE_CURRENT);
  60. /*AlarmManager.RTC_WAKEUP
  61. **/
  62. AlarmManageram;
  63. am=(AlarmManager)getSystemService(ALARM_SERVICE);
  64. intnowDay=Contants.getNowWeek();
  65. intsetDay=0;
  66. cursor=dbHelper.selectAlarmColock();
  67. Stringstr2=null;
  68. intcount2=cursor.getCount();
  69. if(count2>0){
  70. for(inti=0;i<count2;i++){
  71. if(i==1){
  72. cursor.moveToPosition(i);
  73. str2=cursor.getString(2);
  74. }
  75. }
  76. }
  77. if(!(str2.equals("目前无设置"))){
  78. String[]setStr=str2.split(",");
  79. int[]dayOfNum=Contants.getDayOfNum(setStr);
  80. setDay=Contants.getResultDifferDay1(dayOfNum,nowDay);
  81. intdifferDay=Contants.compareDayNowToNext(nowDay,setDay);
  82. if(differDay==0){
  83. am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties()+Contants.getDifferMillis(7),sender);
  84. }else{
  85. am.set(AlarmManager.RTC_WAKEUP,Contants.getNowTimeMinuties()+Contants.getDifferMillis(differDay),sender);
  86. }
  87. }
  88. }
  89. cursor.close();
  90. dbHelper.close();
  91. Toast.makeText(this,R.string.alarm_time_come,Toast.LENGTH_SHORT).show();
  92. newAlertDialog.Builder(this)
  93. .setIcon(R.drawable.clock)
  94. .setTitle("大明闹钟时间到了!!")
  95. .setMessage("你使用大明闹钟时间到了!!!")
  96. .setPositiveButton("确定",
  97. newDialogInterface.OnClickListener()
  98. {
  99. publicvoidonClick(DialogInterfacedialog,intwhichButton)
  100. {
  101. /*AlarmAlertActivity*/
  102. finish();
  103. }
  104. }).setNegativeButton("取消",
  105. newDialogInterface.OnClickListener()
  106. {
  107. publicvoidonClick(DialogInterfacedialog,intwhichButton)
  108. {
  109. /*AlarmAlertActivity*/
  110. finish();
  111. }
  112. }).show();
  113. }
  114. }
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布局文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:background="@drawable/alarm_bg"
  7. >
  8. <LinearLayoutandroid:id="@+id/box"
  9. android:layout_width="fill_parent"
  10. android:layout_height="fill_parent"
  11. >
  12. </LinearLayout>
  13. </LinearLayout>
<?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布局文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="320dip"
  5. android:layout_height="wrap_content"
  6. android:orientation="vertical">
  7. <TextView
  8. android:id="@+id/alarm_title"
  9. android:layout_width="320dip"
  10. android:layout_height="wrap_content"
  11. android:textColor="#FF000000"
  12. android:textSize="23px"
  13. android:layout_margin="5px"
  14. />
  15. <LinearLayout
  16. xmlns:android="http://schemas.android.com/apk/res/android"
  17. android:layout_width="320dip"
  18. android:layout_height="wrap_content"
  19. android:orientation="horizontal"
  20. >
  21. <LinearLayout
  22. xmlns:android="http://schemas.android.com/apk/res/android"
  23. android:layout_width="250dip"
  24. android:layout_height="wrap_content"
  25. android:orientation="horizontal">
  26. <TextView
  27. android:id="@+id/alarm_image"
  28. android:scaleType="centerCrop"
  29. android:layout_width="20dip"
  30. android:layout_height="wrap_content"
  31. android:layout_margin="8px"
  32. />
  33. <LinearLayout
  34. android:layout_width="222dip"
  35. android:layout_height="wrap_content"
  36. android:orientation="vertical"
  37. >
  38. <TextView
  39. android:id="@+id/alarm_time"
  40. android:layout_width="222dip"
  41. android:layout_height="wrap_content"
  42. android:paddingLeft="8dip"
  43. android:layout_marginBottom="3dip"
  44. android:textColor="#FF000000"
  45. android:textSize="18px"
  46. />
  47. <TextView
  48. android:id="@+id/alarm_repeat_time"
  49. android:layout_width="222dip"
  50. android:layout_height="wrap_content"
  51. android:paddingLeft="8dip"
  52. android:layout_gravity="left"
  53. android:textColor="#FF000000"
  54. android:textSize="10px"
  55. />
  56. </LinearLayout>
  57. </LinearLayout>
  58. <View
  59. android:layout_width="2dip"
  60. android:layout_height="match_parent"
  61. android:textColor="#FF000000"
  62. />
  63. <ImageView
  64. android:id="@+id/show_open_close"
  65. android:layout_width="38dip"
  66. android:layout_height="wrap_content"
  67. android:paddingTop="35dip"
  68. android:scaleType="centerCrop"
  69. android:layout_gravity="bottom"
  70. android:gravity="bottom"
  71. android:textColor="#FF000000"
  72. />
  73. <TextView
  74. android:layout_width="30dip"
  75. android:layout_height="wrap_content"
  76. />
  77. </LinearLayout>
  78. </LinearLayout>
<?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布局文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:id="@+id/note_textview"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:layout_gravity="center_horizontal|center_vertical"
  12. android:gravity="center_horizontal|center_vertical"
  13. android:paddingLeft="10dip"
  14. android:text="@string/alarm_list"
  15. android:textColor="#FF000000"
  16. android:textSize="30dip"
  17. android:textStyle="bold"
  18. android:paddingTop="6dip"
  19. android:paddingBottom="6dip"
  20. />
  21. <ListView
  22. android:id="@+id/alarm_list"
  23. android:layout_width="fill_parent"
  24. android:layout_height="fill_parent"
  25. />
  26. </LinearLayout>
<?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布局文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content"
  6. >
  7. <AbsoluteLayout
  8. xmlns:android="http://schemas.android.com/apk/res/android"
  9. android:id="@+id/layout1"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent"
  12. android:background="@drawable/white"
  13. >
  14. <DigitalClock
  15. android:id="@+id/dClock"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:textSize="40sp"
  19. android:textColor="@drawable/blue"
  20. android:layout_x="58px"
  21. android:layout_y="5px">
  22. </DigitalClock>
  23. <TextView
  24. android:id="@+id/isopen_text"
  25. android:layout_width="wrap_content"
  26. android:layout_height="wrap_content"
  27. android:text="@string/str_isopen_text"
  28. android:textSize="16px"
  29. android:textColor="@drawable/black"
  30. android:layout_x="10px"
  31. android:layout_y="64px"
  32. >
  33. </TextView>
  34. <CheckBox
  35. android:id="@+id/isopen_check"
  36. android:layout_width="wrap_content"
  37. android:layout_height="wrap_content"
  38. android:textSize="20sp"
  39. android:textColor="@drawable/black"
  40. android:layout_x="160px"
  41. android:layout_y="54px"
  42. />
  43. <TextView
  44. android:id="@+id/text"
  45. android:layout_width="wrap_content"
  46. android:layout_height="wrap_content"
  47. android:text="@string/str_title1"
  48. android:textSize="20sp"
  49. android:textColor="@drawable/black"
  50. android:layout_x="10px"
  51. android:layout_y="104px"
  52. >
  53. </TextView>
  54. <Button
  55. android:id="@+id/mButton"
  56. android:layout_width="108px"
  57. android:layout_height="40px"
  58. android:text="@string/str_button1"
  59. android:textColor="@drawable/black"
  60. android:textSize="18sp"
  61. android:layout_x="160px"
  62. android:layout_y="102px"
  63. >
  64. </Button>
  65. <TextView
  66. android:id="@+id/repeattext"
  67. android:layout_width="wrap_content"
  68. android:layout_height="wrap_content"
  69. android:text="@string/str_default"
  70. android:textSize="16sp"
  71. android:textColor="@drawable/red"
  72. android:layout_x="10px"
  73. android:layout_y="145px"
  74. >
  75. </TextView>
  76. <Button
  77. android:id="@+id/repeatButton"
  78. android:layout_width="108px"
  79. android:layout_height="40px"
  80. android:layout_x="160px"
  81. android:layout_y="182px"
  82. android:textColor="@drawable/black"
  83. android:textSize="18sp"
  84. android:text="@string/repeat_button"
  85. />
  86. </AbsoluteLayout>
  87. </LinearLayout>
<?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文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <string-arrayname="select_dialog_items">
  4. <item>周一</item>
  5. <item>周二</item>
  6. <item>周三</item>
  7. <item>周四</item>
  8. <item>周五</item>
  9. <item>周六</item>
  10. <item>周日</item>
  11. </string-array>
  12. </resources>
<?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文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <drawablename="white">#FFFFFFFF</drawable>
  4. <drawablename="black">#000000</drawable>
  5. <drawablename="blue">#0000FF</drawable>
  6. <drawablename="red">#FF0000</drawable>
  7. <drawablename="dackgray">#666666</drawable>
  8. <drawablename="yellow">#FFFFFF00</drawable>
  9. </resources>
<?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文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="hello">HelloWorld,MainActivity!</string>
  4. <stringname="app_name">AlarmApp</string>
  5. <stringname="alarm_list">大明闹钟</string>
  6. <stringname="not_dbcursor_values">数据库中没有值,请设置你的闹钟。。。。</string>
  7. <stringname="str_isopen_text">是否开启闹钟</string>
  8. <stringname="str_title1">设置闹钟</string>
  9. <stringname="str_button1">设置时间</string>
  10. <stringname="str_default">目前无设置</string>
  11. <stringname="repeat_button">设置重复</string>
  12. <stringname="alert_dialog_ok">确定</string>
  13. <stringname="alert_dialog_cancel">取消</string>
  14. <stringname="alarm_dialog_title">闹钟设置</string>
  15. <stringname="alert_dialog_multi_choice">重复闹钟设置</string>
  16. <stringname="alarm_time_come">您使用大明闹钟设置的闹钟时间到了!!!</string>
  17. <stringname="alarm_delete1">大明闹钟一删除成功!</string>
  18. <stringname="alarm_delete2">大明闹钟二删除成功!</string>
  19. <stringname="alarm_set2">大明闹钟二时间为:</string>
  20. <stringname="not_time_right">闹钟时间设置不对,请选择周几重复!</string>
  21. </resources>
<?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>
  1. <strong><spanstyle="font-size:24px;color:#660000;">注意:广播一定要在Manifest中注册</span></strong>
<strong><span style="font-size:24px;color:#660000;">注意:广播一定要在Manifest中注册</span></strong>

AndroidManifest.xml文件:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.cn.daming"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdkandroid:minSdkVersion="8"/>
  7. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  8. <!--註冊receiverCallAlarm-->
  9. <receiverandroid:name=".CallAlarm"android:process=":remote"/>
  10. <activityandroid:name=".MainActivity"
  11. android:label="@string/app_name">
  12. <intent-filter>
  13. <actionandroid:name="android.intent.action.MAIN"/>
  14. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  15. </intent-filter>
  16. </activity>
  17. <activityandroid:name=".AlarmAgainSetting"/>
  18. </application>
  19. </manifest>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值