阅读更多

     直接上代码

package com.example.alarmmanagerdemo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/** *  * @ClassName: AlarmReceiver   * @Description: 闹铃时间到了会进入这个广播,这个时候可以做一些该做的业务。 * @author Dahai.zhou * @date 2016年6月2日 13:38:52   * */public class AlarmReceiver extends BroadcastReceiver {@Override    public void onReceive(Context context, Intent intent) {Toast.makeText(context, "闹铃响了, 可以做点事情了~~", Toast.LENGTH_LONG).show();    }}

 

package com.example.alarmmanagerdemo;import java.util.Calendar;import java.util.TimeZone;import android.app.Activity;import android.app.AlarmManager;import android.app.PendingIntent;import android.content.Intent;import android.os.Bundle;import android.os.SystemClock;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.TimePicker;import android.widget.Toast;/** *  * @ClassName: MainActivity   * @Description: 主界面 * @author Dahai.zhou * @date 2016年6月2日 13:39:38 * */public class MainActivity extends Activity {private static final String TAG = MainActivity.class.getSimpleName();private TimePicker mTimePicker;private Button mButton1;private Button mButton2;private Button mButtonCancel;private int mHour = -1;private int mMinute = -1;public static final long DAY = 1000L * 60 * 60 * 24;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取当前时间Calendar calendar = Calendar.getInstance();calendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));if(mHour == -1 && mMinute == -1) {mHour = calendar.get(Calendar.HOUR_OF_DAY);mMinute = calendar.get(Calendar.MINUTE);}mTimePicker = (TimePicker)findViewById(R.id.timePicker);mTimePicker.setCurrentHour(mHour);mTimePicker.setCurrentMinute(mMinute);mTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {mHour = hourOfDay;mMinute = minute;}});mButton1 = (Button)findViewById(R.id.normal_button);mButton1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);// 过10s 执行这个闹铃Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));calendar.add(Calendar.SECOND, 10);// 进行闹铃注册AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);manager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);Toast.makeText(MainActivity.this, "设置简单闹铃成功!", Toast.LENGTH_LONG).show();}});mButton2 = (Button)findViewById(R.id.repeating_button);mButton2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);            long firstTime = SystemClock.elapsedRealtime();// 开机之后到现在的运行时间(包括睡眠时间)            long systemTime = System.currentTimeMillis();            Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 这里时区需要设置一下,不然会有8个小时的时间差 calendar.set(Calendar.MINUTE, mMinute); calendar.set(Calendar.HOUR_OF_DAY, mHour); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); // 选择的每天定时时间 long selectTime = calendar.getTimeInMillis(); // 如果当前时间大于设置的时间,那么就从第二天的设定时间开始 if(systemTime > selectTime) { Toast.makeText(MainActivity.this, "设置的时间小于当前时间", Toast.LENGTH_SHORT).show(); calendar.add(Calendar.DAY_OF_MONTH, 1); selectTime = calendar.getTimeInMillis(); } // 计算现在时间到设定时间的时间差 long time = selectTime - systemTime; firstTime += time;            // 进行闹铃注册            AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);            manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,                            firstTime, 10*1000, sender);            Log.i(TAG, "time ==== " + time + ", selectTime ===== "            + selectTime + ", systemTime ==== " + systemTime + ", firstTime === " + firstTime);            Toast.makeText(MainActivity.this, "设置重复闹铃成功! ", Toast.LENGTH_LONG).show();}});mButtonCancel = (Button)findViewById(R.id.cancel_button);mButtonCancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);            PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this,                    0, intent, 0);                        // 取消闹铃            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);            am.cancel(sender);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

 

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

 

        

 

  • AlarmManagerDemo.rar (581.6 KB)
  • 下载次数: 11

更多相关文章

  1. Android 检测用户一段时间无操作
  2. Android/Java仿微信按时间长短分类显示时间戳
  3. android 时间戳与日期格式的互相转换 以及 自定义选择器
  4. 两种方式使用android时间和日期控件
  5. Android 时间 日期 时区
  6. Android 自定义 Toast 显示时间
  7. (安卓/android)dex2oat与应用安装时间优化
  8. android 时间同步

随机推荐

  1. 评论: 网页浏览速度提高切实可行的七个方
  2. PHP:将simpleXML对象转换为二维数组
  3. PHP实现WebSocket示例
  4. php image函数,操作压缩图片时,png图片压
  5. 使用PHP查询db,通过AJAX获取结果作为变量,
  6. PHP项目转移到服务器上验证码不显示解决
  7. PHP中钩子函数的实现与认识
  8. PHP5.4.0新特性研究
  9. 如何在没有显示ID的情况下唯一识别记录?
  10. 来自php表单的样式电子邮件