【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2430|回复: 0

[转载]Android简单闹钟程序

[复制链接]
发表于 2013-2-26 14:50:28 | 显示全部楼层 |阅读模式
这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒。
这里遗留了一个问题:
如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进程管理中实现应用程序的关闭操作,这个提醒就不起作用了,我很疑惑的是,我通过应用程序本身关闭了后,在进程中也是查看不到这个应用了的。所以哪位知道的帮留个言指点下,谢谢。
  1. package com.example.clock;

  2. import java.util.Calendar;
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.app.TimePickerDialog;
  6. import android.content.DialogInterface;
  7. import android.os.Bundle;
  8. import android.view.KeyEvent;
  9. import android.view.View;
  10. import android.widget.Button;
  11. import android.widget.TimePicker;

  12. public class ClockDemo extends Activity {

  13.     private Button mSet;
  14.     Calendar mCalendar = Calendar.getInstance();

  15.     /** Called when the activity is first created. */
  16.     @Override
  17.     public void onCreate(Bundle savedInstanceState) {
  18.         super.onCreate(savedInstanceState);
  19.         setContentView(R.layout.main);
  20.         ObjectPool.mAlarmHelper = new AlarmHelper(this);
  21.         mSet = (Button) findViewById(R.id.mSet);
  22.         setListener();
  23.     }

  24.     public void setListener() {
  25.         mSet.setOnClickListener(new View.OnClickListener() {
  26.             public void onClick(View v) {
  27.                 mCalendar.setTimeInMillis(System.currentTimeMillis());
  28.                 int mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
  29.                 int mMinute = mCalendar.get(Calendar.MINUTE);
  30.                 new TimePickerDialog(ClockDemo.this,
  31.                         new TimePickerDialog.OnTimeSetListener() {
  32.                             public void onTimeSet(TimePicker view,
  33.                                     int hourOfDay, int minute) {
  34.                                 mCalendar.setTimeInMillis(System
  35.                                         .currentTimeMillis());
  36.                                 mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
  37.                                 mCalendar.set(Calendar.MINUTE, minute);
  38.                                 mCalendar.set(Calendar.SECOND, 0);
  39.                                 mCalendar.set(Calendar.MILLISECOND, 0);
  40.                                 ObjectPool.mAlarmHelper.openAlarm(32, "ddd",
  41.                                         "ffff", mCalendar.getTimeInMillis());
  42.                             }
  43.                         }, mHour, mMinute, true).show();
  44.             }
  45.         });
  46.     }

  47.     @Override
  48.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  49.         if (keyCode == KeyEvent.KEYCODE_BACK) {
  50.             showBackDialog();
  51.             return true;
  52.         }
  53.         return super.onKeyDown(keyCode, event);
  54.     }

  55.     /** Give the tip when exit the application. */
  56.     public void showBackDialog() {
  57.         final AlertDialog.Builder builder = new AlertDialog.Builder(this);
  58.         builder.setTitle("提示")
  59.                 .setIcon(R.drawable.icon)
  60.                 .setMessage("是否退出?")
  61.                 .setPositiveButton("sure",
  62.                         new DialogInterface.OnClickListener() {
  63.                             public void onClick(DialogInterface dialog,
  64.                                     int which) {
  65.                                 System.exit(0);
  66.                                 android.os.Process
  67.                                         .killProcess(android.os.Process.myPid());

  68.                                 dialog.dismiss();
  69.                             }
  70.                         })
  71.                 .setNegativeButton("cancel",
  72.                         new DialogInterface.OnClickListener() {
  73.                             public void onClick(DialogInterface dialog,
  74.                                     int which) {
  75.                                 dialog.dismiss();
  76.                             }
  77.                         });
  78.         AlertDialog ad = builder.create();
  79.         ad.show();
  80.     }

  81. }
复制代码
AlarmHelper.java
  1. package com.example.clock;

  2. import android.app.AlarmManager;
  3. import android.app.PendingIntent;
  4. import android.content.Context;
  5. import android.content.Intent;

  6. public class AlarmHelper {

  7.     private Context c;
  8.     private AlarmManager mAlarmManager;

  9.     public AlarmHelper(Context c) {
  10.         this.c = c;
  11.         mAlarmManager = (AlarmManager) c
  12.                 .getSystemService(Context.ALARM_SERVICE);
  13.     }

  14.     public void openAlarm(int id, String title, String content, long time) {
  15.         Intent intent = new Intent();
  16.         intent.putExtra("_id", id);
  17.         intent.putExtra("title", title);
  18.         intent.putExtra("content", content);
  19.         intent.setClass(c, CallAlarm.class);
  20.         PendingIntent pi = PendingIntent.getBroadcast(c, id, intent,
  21.                 PendingIntent.FLAG_UPDATE_CURRENT);
  22.         mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, pi);
  23.     }

  24.     public void closeAlarm(int id, String title, String content) {
  25.         Intent intent = new Intent();
  26.         intent.putExtra("_id", id);
  27.         intent.putExtra("title", title);
  28.         intent.putExtra("content", content);
  29.         intent.setClass(c, CallAlarm.class);
  30.         PendingIntent pi = PendingIntent.getBroadcast(c, id, intent, 0);
  31.         mAlarmManager.cancel(pi);
  32.     }
  33. }
复制代码
CallAlarm.java
  1. package com.example.clock;

  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;

  5. public class CallAlarm extends BroadcastReceiver {
  6.     @Override
  7.     public void onReceive(Context context, Intent intent) {
  8.         intent.setClass(context, AlarmAlert.class);
  9.         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  10.         context.startActivity(intent);
  11.     }
  12. }
复制代码
AlarmAlert.java
  1. package com.example.clock;

  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.DialogInterface;
  5. import android.os.Bundle;

  6. public class AlarmAlert extends Activity {
  7.     @Override
  8.     protected void onCreate(Bundle savedInstanceState) {
  9.         super.onCreate(savedInstanceState);
  10.         new AlertDialog.Builder(AlarmAlert.this)
  11.                 .setIcon(R.drawable.clock)
  12.                 .setTitle("ddd")
  13.                 .setMessage("fff")
  14.                 .setPositiveButton("ddd",
  15.                         new DialogInterface.OnClickListener() {
  16.                             public void onClick(DialogInterface dialog,
  17.                                     int whichButton) {
  18.                                 System.exit(0);
  19.                                 android.os.Process
  20.                                         .killProcess(android.os.Process.myPid());
  21.                             }
  22.                         }).show();
  23.     }
  24. }
复制代码
ObjectPool.java
  1. public class ObjectPool {

  2.     /** The alarm object. */
  3.     public static AlarmHelper mAlarmHelper;

  4. }
复制代码
main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns: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.     <DigitalClock
  7.         android:id="@+id/dClock"
  8.         android:layout_width="wrap_content"
  9.         android:layout_height="wrap_content"
  10.         android:textSize="40sp"
  11.         android:textColor="@drawable/blue" />
  12.     <Button
  13.         android:id="@+id/mSet"
  14.         android:layout_width="100dp"
  15.         android:layout_height="wrap_content"
  16.         android:text="@string/str_button1"
  17.         android:textColor="@drawable/red"
  18.         android:textSize="18sp" />
  19. </LinearLayout>
复制代码
最后贴个配置文件
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.example.clock" android:versionCode="1"
  4.     android:versionName="1.0">
  5.     <uses-sdk android:minSdkVersion="7" />
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">
  7.         <activity android:name=".ClockDemo" android:label="@string/app_name">
  8.             <intent-filter>
  9.                 <action android:name="android.intent.action.MAIN" />
  10.                 <category android:name="android.intent.category.LAUNCHER" />
  11.             </intent-filter>
  12.         </activity>
  13.         <receiver android:name=".CallAlarm" />
  14.         <activity android:name=".AlarmAlert" android:label="@string/app_name" />
  15.     </application>
  16. </manifest>
复制代码
看了那么多,估计某些人又嫌烦了,我只贴上代码的目的是希望大家能看代码,而不是电脑上下了一个又一个的源文件,只知道用而不关心其中的技术点,这样就不能举一番三了。
为了不同的同学,还是贴上源文件吧在。
源码下载:ClockDemo.rar
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-6-3 22:38

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表