使用AlarmManager设置闹钟

运行效果:

                           

activity_main.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context=".MainActivity">
 8
 9     <TimePicker
10         android:id="@+id/time"
11         android:layout_width="wrap_content"
12         android:layout_height="wrap_content"/>  //时间拾取器
13
14     <Button
15         android:id="@+id/set"
16         android:layout_width="wrap_content"
17         android:layout_height="wrap_content"
18         android:layout_below="@+id/time"
19         android:layout_centerHorizontal="true"
20         android:text="set"
21         />  //设置闹钟按钮
22
23 </RelativeLayout>

MainActivity:

 1 package com.mingrisoft.alarm;
 2
 3 import android.app.AlarmManager;
 4 import android.app.PendingIntent;
 5 import android.content.Context;
 6 import android.content.Intent;
 7 import android.support.v7.app.AppCompatActivity;
 8 import android.os.Bundle;
 9 import android.view.View;
10 import android.widget.Button;
11 import android.widget.TimePicker;
12 import android.widget.Toast;
13
14 import java.util.Calendar;
15
16 public class MainActivity extends AppCompatActivity {
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22
23         final TimePicker timePicker = findViewById(R.id.time);  //时间拾取器
24         final Calendar calendar;    //日历对象
25
26         calendar = Calendar.getInstance();  //获取日历对象
27         timePicker.setIs24HourView(true);   //设置使用24小时制
28
29         Button button = findViewById(R.id.set); //获取“设置闹钟”按钮
30         //为按钮添加时间监听器
31         button.setOnClickListener(new View.OnClickListener() {
32             @Override
33             public void onClick(View v) {
34                 //创建Intent对象
35                 Intent intent = new Intent(MainActivity.this, AlarmActivity.class);
36                 //获取显示闹钟的PendingIntent对象
37                 PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0 , intent, 0);
38                 //获取AlarmManager对象
39                 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
40                 //设置闹钟的小时数
41                 calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
42                 //设置闹钟的分钟数
43                 calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
44                 //设置闹钟的秒数
45                 calendar.set(Calendar.SECOND, 0);
46                 //设置一个闹钟
47                 alarmManager.set(alarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
48                 //显示一个消息提示
49                 Toast.makeText(MainActivity.this, "闹钟设置成功", Toast.LENGTH_SHORT).show();
50             }
51         });
52     }
53 }

创建一个AlarmActivity,用于显示闹钟提示的内容。在该Activity中重写onCreate()方法,在该方法中创建并显示一个带“确定”按钮的对话框,显示闹钟的提示内容:

 1 package com.mingrisoft.alarm;
 2
 3 import android.content.DialogInterface;
 4 import android.os.Bundle;
 5 import android.support.annotation.Nullable;
 6 import android.support.v7.app.AlertDialog;
 7 import android.support.v7.app.AppCompatActivity;
 8
 9 public class AlarmActivity extends AppCompatActivity {
10     @Override
11     protected void onCreate(@Nullable Bundle savedInstanceState) {
12         super.onCreate(savedInstanceState);
13
14         AlertDialog alert = new AlertDialog.Builder(this).create();
15         alert.setIcon(R.drawable.alarm);    //设置对话框的图标
16         alert.setTitle("传递正能量");    //设置对话框的标题
17         alert.setMessage("hemeiwolong");    //设置要要显示的内容
18
19         alert.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
20             @Override
21             public void onClick(DialogInterface dialog, int which) {
22
23             }
24         });
25         alert.show();   //显示对话框
26     }
27 }

AndroidManifest.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.mingrisoft.alarm">
 4
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:roundIcon="@mipmap/ic_launcher_round"
10         android:supportsRtl="true"
11         android:theme="@style/AppTheme">
12         <activity android:name=".MainActivity">
13             <intent-filter>
14                 <action android:name="android.intent.action.MAIN" />
15
16                 <category android:name="android.intent.category.LAUNCHER" />
17             </intent-filter>
18         </activity>
19
20         <activity
21             android:name=".AlarmActivity"
22             android:label="闹钟">
23         </activity>
24     </application>
25
26 </manifest>

原文地址:https://www.cnblogs.com/hemeiwolong/p/12601729.html

时间: 2024-10-11 09:24:51

使用AlarmManager设置闹钟的相关文章

AlarmManager定时闹钟

一.AlarmManager介绍: AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager为我们广播一个我们设定的Intent,通常我们使用 PendingIntent,PendingIntent可以理解为Intent的封装包,简单的说就是在Intent上在加个指定的动作.在使用Intent的时候,我们还需要在执行startActivity.startServ

ios-通知:闹钟之关于设置闹钟后,点击app图标进入程序不播放音乐的问题(已解决)

请看当天Demo Demo中详细描述了: 设置闹钟: 1.通知时间未到,点击app直接进入,通知时间到,闹钟不响(闹钟开启未退出程序也是这种情况) 1.1解决此问题先要通过通知时间到调用的代理方法,在里面加一个音频AVFoundation,设置到时播放: 1.2随之而来的另一个问题就是,闹钟冲突即如果通过锁屏或者退出app后,出现通知,点击通知进入程序,(系统默认通知的音乐自动停止,但是自己通过代理方法设定的player仍开始播放) 1.3如何解决以上方法: 设置一个全局开关(即flag),在程

AlarmManager实现闹钟功能

一:AlarmManager简介 1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用,实现闹钟等提示功能 2.AlarmManager的常用方法有三个: (1)set(int type,long startTime,PendingIntent pi): 该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹钟

AlarmManager手机闹钟简介

1.void set(int type , long triggerAtTime , PendingIntent operation ) : 设置在 triggerAtTime时间启动由operation参数指定的组件, 其中第一个参数指定定时服务的类型,该参数可接受如下值: ELAPSED_REALTIME:指定从现在开始时间过了一定时间后启动operation所对应的组件. ELAPSED_REALTIME_WAKEUP:指定从现在开始时间过了一定时间后启动operation所对应的组件,即

android 手机后台播音乐,设置闹钟,打一通电话,挂断电话后,闹钟与音乐同时响起

修改: frameworks\base\media\java\android\media\MediaFocusControl.java: 1.import packages: import com.android.internal.telephony.ITelephony; import android.os.ServiceManager; 2.增加获取当前Phone Call State的方法getPhoneCallState(): private int getPhoneCallState(

Android闹钟设置的解决方案

Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案. 主要问题 API19开始AlarmManager的机制修改. 应用程序被Kill掉后,设置的闹钟不响. 6.0以上进入Doze模式会使JobScheduler停止工作. 手机设置重启后,闹钟失效问题. API19以上AlarmManager机制的修改 API19之前AlarmManager提供了三个设置闹钟的方法,由于业务需求闹钟只需要一

Android闹钟 AlarmManager的使用

Android闹钟 AlarmManager的使用 AlarmManager介绍 AlarmManager这个类提供对系统闹钟服务的访问接口. 你可以为你的应用设定一个在未来某个时间唤醒的功能. 当闹钟响起,实际上是系统发出了为这个闹钟注册的广播,会自动开启目标应用. 注册的闹钟在设备睡眠的时候仍然会保留,可以选择性地设置是否唤醒设备,但是当设备关机和重启后,闹钟将会被清除. 在alarm的receiver的onReceive()方法被执行的时候,Alarm Manager持有一个CPU唤醒锁,

android 闹钟设置问题

Android开发中,alarmManager在5.0以上系统,启动时间设置无效的问题 做一个app,需要后台保持发送心跳包.由于锁屏后CPU休眠,导致心跳包线程被挂起,所以尝试使用alarmManager定时唤醒Service发送心跳包.以下是开启alarmManager的代码 //开启轮询服务 public static void startPollingService(Context context, int seconds, Class<?> cls,String action) {

Android学习笔记之AlarmManager有关的定时器和闹钟的实现

毕业设计中有个功能模块叫就医提醒,大抵的功能就是用户设定一个未来时间的闹钟,并设置闹钟的标签,标签上写着去哪里就医之类的信息,主要设计参考魅族系统自带的闹钟功能.我在网上看了不少博客,也在github上下载了不少源码,发现也没有写的特别好的,总有这种或者那种的问题,比如说闹钟不是写成后台服务的模式,APP关闭之后闹钟不会提醒,或者手机关机之后之前设置的闹钟信息丢失,所以我准备自己写一个功能比较齐全的. 所以这个闹钟的功能需要用到Android的数据库Sqlite.Service.Broadcas