[控件]AlarmManager全局定时器

package alarm.clock;

import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;

public class mainActivity extends Activity implements OnClickListener {
    Button btnset;
    Calendar calendar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnset = (Button) findViewById(R.id.btnset);
        btnset.setOnClickListener(this);
        // 获得Calendar的实例Calendar不能new 创建
        calendar = Calendar.getInstance();
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.btnset:
                showDialog(0);
                break;
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        Dialog d = null;
        switch(id) {
            case 0:
                d = new TimePickerDialog(mainActivity.this,
                        new OnTimeSetListener() {
                            @Override
                            public void onTimeSet(TimePicker view,
                                    int hourOfDay, int minute) {
                                Intent intent = new Intent(mainActivity.this,
                                        alarm.class);
                                PendingIntent pendingIntent = PendingIntent
                                        .getBroadcast(mainActivity.this, 0,
                                                intent, 0);
                                calendar.setTimeInMillis(System
                                        .currentTimeMillis());
                                calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                                calendar.set(Calendar.MINUTE, minute);
                                calendar.set(Calendar.SECOND, 0);
                                calendar.set(Calendar.MILLISECOND, 0);
                                // 获得实例
                                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
                                // public static final int ELAPSED_REALTIME
                                //
                                // 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时间,可以通过调用SystemClock.elapsedRealtime()获得。
                                //
                                // public static final int
                                // ELAPSED_REALTIME_WAKEUP
                                // 能唤醒系统,用法同ELAPSED_REALTIME
                                //
                                // public static final int RTC
                                // 当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用
                                // System.currentTimeMillis()获得。
                                //
                                // public static final int RTC_WAKEUP
                                // 能唤醒系统,用法同RTC类型
                                // 如果使用ELAPSED_REALTIME_WAKEUP类型
                                // 应该调用SystemClock.elapsedRealtime()获取相对时间在加上你设定的延迟时间
                                //
                                // alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                                // SystemClock.elapsedRealtime()+5000, sender);
                                // 如果使用RTC_WAKEUP类型
                                // 应该调用System.currentTimeMillis()获取从1970.1.1号以来的时间在加上你设定的延迟时间
                                //
                                // alarmManager.set(AlarmManager.RTC_WAKEUP,
                                // System.currentTimeMillis()+5000, sender);

                                // 设置闹钟 一次性的
                                am.set(AlarmManager.RTC_WAKEUP,
                                        calendar.getTimeInMillis(),
                                        pendingIntent);

                                // 设置周期闹钟
                                am.setRepeating(AlarmManager.RTC_WAKEUP,
                                        System.currentTimeMillis()
                                                + (10 * 1000),
                                        (24 * 60 * 60 * 1000), pendingIntent);
                                // 取消闹钟
                                // 取消的Intent必须与启动Intent保持绝对一致才能支持取消AlarmManager
                                // am.cancel(pendingIntent);
                            }
                        }, 0, 0, true);
                break;
        }
        return d;
    }
}
package alarm.clock;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
 * @version 2012-7-18 上午10:22:32
 **/
public class alarm extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "闹钟响了~~~~~", Toast.LENGTH_LONG).show();
    }
}
<receiver
			android:name=".alarm"
			android:process=":remote"></receiver>
		<!-- 也就是说android:process=":remote",代表在应用程序里,当需要该service时,会自动创建新的进程。而如果是android:process="remote",没有“:”分号的,则创建全局进程,不同的应用程序共享该进程。 -->


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值