阅读更多

     直接上代码

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设置图片变化的四种效果代码
  3. MSDK接入 中的各种问题
  4. Android(安卓)音量 获取 设置
  5. android 中 系统日期时间的获取
  6. android获取屏幕的宽度和高度
  7. android listview 长按弹出菜单--ContextMenu并进行删除操作
  8. Android复习(十)
  9. android之Notification的使用

随机推荐

  1. Android下用Media Player实现一个最简单
  2. Android沉浸式状态栏(包含 小米、魅族)
  3. android 读取本地超大图片
  4. 安卓开发之android使用webview时按后退会
  5. Android的listview、gridview 笔记
  6. Cordova 3.x 源码分析(2) -- cordova.js概
  7. Android开发中遇到的小问题 一
  8. android: 制作system.img(yaffs2) 镜像
  9. android singleTask几个注意点
  10. android中Pull解析器