android 多闹钟实现代码,Android重复闹钟(每天)的实现

MainActivity如下:

package cc.cc;

import java.util.Calendar;

import java.util.Locale;

import android.os.Bundle;

import android.app.Activity;

import android.app.AlarmManager;

import android.app.PendingIntent;

import android.content.Context;

import android.content.Intent;

/**

* Demo描述:

* 重复闹钟的实现

*

* 注意事项:

* 1 因为我们是要实现的两个闹钟每天早八点和晚八点,它们是重复的.

* 所以在PendingIntent.getBroadcast()很容易出错.导致早八点

* 的闹钟无效.主要原因是因为该方法的第四个参数引起的.

* 解决办法:为BroadcastReceiver设置两个action,在生成Intent

* 的时候采用了不同的action,从而让两个闹钟都起作用.

* 如果有更好的方式请留言指出,多谢.

* 2 在calendar.set(Calendar.HOUR_OF_DAY, 8)方法的第二个参数

* 表示小时,请按照24小时制式填写.不用管此时设备采用什么时间

* 制式(12小时或24小时)

*

* 参考资料:

* 1 http://blog.csdn.net/hudashi/article/details/7060837

* 2 http://blog.csdn.net/wdaming1986/article/details/6745655

* 3 http://blog.csdn.net/z1074971432/article/details/17532139

* Thank you very much

*

*/

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

sendAlarmEveryday1(this);

sendAlarmEveryday2(this);

}

private void sendAlarmEveryday1(Context context){

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

Calendar calendar =Calendar.getInstance(Locale.getDefault());

calendar.setTimeInMillis(System.currentTimeMillis());

calendar.set(Calendar.HOUR_OF_DAY, 8);

calendar.set(Calendar.MINUTE, 30);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MILLISECOND, 0);

Intent intent = new Intent();

intent.setAction("testalarm0");

PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);

}

private void sendAlarmEveryday2(Context context){

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

Calendar calendar =Calendar.getInstance(Locale.getDefault());

calendar.setTimeInMillis(System.currentTimeMillis());

calendar.set(Calendar.HOUR_OF_DAY, 20);

calendar.set(Calendar.MINUTE, 30);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MILLISECOND, 0);

Intent intent = new Intent();

intent.setAction("testalarm1");

PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);

}

}

AlarmBroadcastReceiver如下:

package cc.cc;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

public class AlarmBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if ("testalarm0".equals(intent.getAction())) {

System.out.println("第一个闹钟");

}

if ("testalarm1".equals(intent.getAction())) {

System.out.println("第二个闹钟");

}

}

}

AndroidManifest.xml如下:

package="cc.cc"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="10"

android:targetSdkVersion="10" />

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="cc.cc.MainActivity"

android:label="@string/app_name" >

main.xml如下:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值