Android 实现闹钟功能
一、手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以在程序中设置某个应用程序在未来的某个时刻被执行。当AlarmManager定时时间到了之后,当初注册的Intent对象将会被系统广播,进而启动目标程序。
二、在程序运行时当需要使用AlarmManager类时,可以通过Context对象的getSystemService(Context.ALARM_SERVICE)方法来获得AlarmManager对象。
以下程序中使用时间选择对话框设置闹钟的时间。
main.xml布局文件
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <Button android:id="@+id/btn"
- android:text="设置闹钟"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
- </LinearLayout>
清单文件
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.ljq.activity" android:versionCode=""
- android:versionName="1.0">
- <application android:icon="@drawable/icon"
- android:label="@string/app_name">
- <activity android:name=".MainActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category
- android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name=".AlarmActivity" />
- <!-- android:process=":remote": 新开一个进程 -->
- <receiver android:name=".AlarmReceiver" android:process=":remote"/>
- </application>
- <uses-sdk android:minSdkVersion="" />
- </manifest>
AlarmReceiver类
- package com.ljq.activity;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- public class AlarmReceiver extends BroadcastReceiver{
- @Override
- public void onReceive(Context context, Intent intent) {
- Intent i=new Intent(context, AlarmActivity.class);
- i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(i);
- }
- }
AlarmActivity类
- package com.ljq.activity;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.DialogInterface.OnClickListener;
- import android.os.Bundle;
- public class AlarmActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //显示对话框
- new AlertDialog.Builder(AlarmActivity.this).
- setTitle("闹钟").//设置标题
- setMessage("时间到了!").//设置内容
- setPositiveButton("知道了", new OnClickListener(){//设置按钮
- public void onClick(DialogInterface dialog, int which) {
- AlarmActivity.this.finish();//关闭Activity
- }
- }).create().show();
- }
- }
MainActivity类
- 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.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TimePicker;
- import android.widget.Toast;
- public class MainActivity extends Activity{
- private Button btn=null;
- private AlarmManager alarmManager=null;
- Calendar cal=Calendar.getInstance();
- final int DIALOG_TIME = ; //设置对话框id
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- alarmManager=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
- btn=(Button)findViewById(R.id.btn);
- btn.setOnClickListener(new View.OnClickListener(){
- public void onClick(View view) {
- showDialog(DIALOG_TIME);//显示时间选择对话框
- }
- });
- }
- @Override
- protected Dialog onCreateDialog(int id) {
- Dialog dialog=null;
- switch (id) {
- case DIALOG_TIME:
- dialog=new TimePickerDialog(
- this,
- new TimePickerDialog.OnTimeSetListener(){
- public void onTimeSet(TimePicker timePicker, int hourOfDay,int minute) {
- Calendar c=Calendar.getInstance();//获取日期对象
- c.setTimeInMillis(System.currentTimeMillis()); //设置Calendar对象
- c.set(Calendar.HOUR, hourOfDay); //设置闹钟小时数
- c.set(Calendar.MINUTE, minute); //设置闹钟的分钟数
- c.set(Calendar.SECOND, ); //设置闹钟的秒数
- c.set(Calendar.MILLISECOND, ); //设置闹钟的毫秒数
- Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); //创建Intent对象
- PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, , intent, ); //创建PendingIntent
- //alarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); //设置闹钟
- alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi); //设置闹钟,当前时间就唤醒
- Toast.makeText(MainActivity.this, "闹钟设置成功", Toast.LENGTH_LONG).show();//提示用户
- }
- },
- cal.get(Calendar.HOUR_OF_DAY),
- cal.get(Calendar.MINUTE),
- false);
- break;
- }
- return dialog;
- }
- }
运行结果
Android 实现闹钟功能的更多相关文章
- Android AlarmManager类的应用(实现闹钟功能)
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
- AlarmManager类的应用(实现闹钟功能)
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
- 基于Android的闹钟的软件
一.本课题要求:设计一个基于Android的闹钟的软件. 实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件. 二.需求分析 该课题实现在手机操作系统And ...
- Android Studio调试功能使用总结【转】
Android Studio调试功能使用总结[转] 这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...
- Android Studio调试功能使用总结---转
Android Studio调试功能使用总结[转] 这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...
- 集成Android免费语音合成功能(在线、离线、离在线融合)
集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离线)集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合) 转眼间,大半年没 ...
- Android中选项卡功能的实现
Android中选项卡功能的实现 Android中使用TabHost和TabWidget来实现选项卡功能.TabHost必须是布局的根节点,它包含两个子节点: TabWidget,显示选项卡: Fra ...
- Android社会化分享功能的实现步骤
众所周知,互联网是一个资源共享的地方,在网络上,我们可以分享我们所有认为好的资源.而随着互联网信息爆发式的增长,我们习惯了一键分享功能,比如:微博分享.微信分享.QQ空间分享.人人网分享等等.由此可见 ...
- Android微信分享功能实例+demo
Android微信分享功能实例 1 微信开放平台注册 2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册 4 测试分享功能. 有问题请留 ...
随机推荐
- 移除Sourcesafe与VC6的绑定
整理日: 2015年2月16日 HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Source Control\Disabled
- ios7控件特性(一)
苹果发布iOS7之后,iOS7全部采用扁平化的界面,我们的app界面在iOS7上出现了很大的改变,这包括UINavigationBar,UIButton,UIActionSheet,UITabBar等 ...
- Flyer
hdu4768:http://acm.hdu.edu.cn/showproblem.php?pid=4768 题意:给你1--2^32个位置,然后有m个操作,每次操作给你3个数 a,b,c,然后在a, ...
- vs2010编译curl为static库及测试
1,编译curl为static库 用vs2010打开: curl-7.32.0\vs\vc6\vc6curl.dsw 选择LIB Release生成libcurl静态库: curl-7.32.0\vs ...
- 译文:TransactionScope 与 Async/Await
你可能不知道这一点,在 .NET Framework 4.5.0 版本中包含有一个关于 System.Transactions.TransactionScope 在与 async/await 一起工 ...
- 【HDOJ】1892 See you~
wa了十次,原来变量名写错.二维树状数组. #include <cstdio> #include <cstring> #define MAXN 1002 int nums[MA ...
- windows/NBTSTAT,linux/nmblookup命令详解,查询NetBIOS名
NBTSTAT命令详解 请问: Linux下有没有和nbtstat一样的命令,用 nmblookup -A ip 可以 nbstat命令主要用于查看当前基于netbios的tcp/ip连接状态,通过该 ...
- R语言 系统聚类分析1
#聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距 ...
- 【传】玩转Android---UI篇---ImageButton(带图标的按钮)
原文网址:http://hualang.iteye.com/blog/964049 除了Android系统自带的Button按钮一万,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首 ...
- HDU-4920 Matrix multiplication
矩阵相乘,采用一行的去访问,比采用一列访问时间更短,根据数组是一行去储存的.神奇小代码. Matrix multiplication Time Limit: 4000/2000 MS (Java/Ot ...