AlarmManager手机闹钟服务
来源:互联网 发布:阿沁淘宝店真假 编辑:程序博客网 时间:2024/05/01 16:16
一、简介
AlarmManager的本质是一个全局的定时器,AlramManager可在指定的时间或周期启动其他组件。
二、常用方法
1.set(int type,long triggerAtTime,PendingIntent operation):
设置在triggerAtTime时间启动用operation参数指定的组件。其中第一个指定了启动的服务类型。可选的参数如下:
ELAPSED_REALTIME:指定从现在开始时间过了一定时间后启动operation所对应的组件。
ELAPSED_REALTIME_WAKEUP:同上。只不过在系统关机时也可以启动operation所对应的组件。
RTC:指定当系统调用System.currentTimeMillis()方法返回值与TriggerAtTime相等时启动operation所对应的组件。
RTC_WAKEUP:同上,只不过系统关机也会执行operation所对应的组件
2.setInexactRepeating(int type,long triggerAtTime,long interval,PendingIntent operation):
设置一个非精确的周期性执行任务。
3.setRepeating(int type,long triggrtAtTime,long interval,PendingIntent operation):
设置一个周期性执行的任务。
4.cancel(PendingIntent operation):
取消定时服务。
三、设置闹钟
设置界面:
import java.util.Calendar;import android.app.Activity;import android.app.AlarmManager;import android.app.PendingIntent;import android.app.Service;import android.app.TimePickerDialog;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;import android.widget.Toast;public class AlarmTest extends Activity{Button setTime;AlarmManager aManager;Calendar currentTime = Calendar.getInstance();@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 获取程序界面的按钮setTime = (Button) findViewById(R.id.setTime);// 获取AlarmManager对象aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);// 为“设置闹铃”按钮绑定监听器。setTime.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View source){Calendar currentTime = Calendar.getInstance();// 创建一个TimePickerDialog实例,并把它显示出来。new TimePickerDialog(AlarmTest.this, 0, // 绑定监听器new TimePickerDialog.OnTimeSetListener(){@Overridepublic void onTimeSet(TimePicker tp,int hourOfDay, int minute){// 指定启动AlarmActivity组件Intent intent = new Intent(AlarmTest.this,AlarmActivity.class);// 创建PendingIntent对象PendingIntent pi = PendingIntent.getActivity(AlarmTest.this, 0, intent, 0);Calendar c = Calendar.getInstance();// 根据用户选择时间来设置Calendar对象c.set(Calendar.HOUR, hourOfDay);c.set(Calendar.MINUTE, minute);// 设置AlarmManager将在Calendar对应的时间启动指定组件aManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(), pi);// 显示闹铃设置成功的提示信息Toast.makeText(AlarmTest.this, "闹铃设置成功啦", Toast.LENGTH_SHORT).show();}}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime.get(Calendar.MINUTE), false).show();}});}}闹钟界面:
import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.media.MediaPlayer;import android.os.Bundle;/** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */public class AlarmActivity extends Activity{MediaPlayer alarmMusic;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// 加载指定音乐,并为之创建MediaPlayer对象alarmMusic = MediaPlayer.create(this, R.raw.alarm);alarmMusic.setLooping(true);// 播放音乐 alarmMusic.start();// 创建一个对话框new AlertDialog.Builder(AlarmActivity.this).setTitle("闹钟").setMessage("闹钟响了,Go!Go!Go!").setPositiveButton("确定", new OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){// 停止音乐alarmMusic.stop();// 结束该ActivityAlarmActivity.this.finish();}}).show();}}关键的部分在于设置闹钟部分。aManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(), pi);到点时准时通过一个AlertDialog来提醒用户。这样一个基本的闹钟服务就完成了。
四、定时更换壁纸
通过AlarmManager周期性的调用某个Service,从而实现更换壁纸的功能。
相关方法:
setBitmap(Bitmap bitmap):将壁纸设置bitmap所代表的位图。
setResource(int Resid):将壁纸设置resid所代表的图片
setStream(InputStream in):将壁纸设置in数据所代表的图片。
主界面:
import android.app.Activity;import android.app.AlarmManager;import android.app.PendingIntent;import android.app.Service;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class AlarmChangeWallpaper extends Activity{// 定义AlarmManager对象AlarmManager aManager;Button start, stop;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);start = (Button) findViewById(R.id.start);stop = (Button) findViewById(R.id.stop);aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);// 指定启动ChangeService组件Intent intent = new Intent(AlarmChangeWallpaper.this,ChangeService.class);// 创建PendingIntent对象final PendingIntent pi = PendingIntent.getService(AlarmChangeWallpaper.this, 0, intent, 0);start.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0){// 设置每隔5秒执行pi代表的组件一次aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 5000, pi);start.setEnabled(false);stop.setEnabled(true);Toast.makeText(AlarmChangeWallpaper.this, "壁纸定时更换启动成功啦",Toast.LENGTH_SHORT).show();}});stop.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0){start.setEnabled(true);stop.setEnabled(false);// 取消对pi的调度aManager.cancel(pi);}});}}Service服务:
import android.app.Service;import android.app.WallpaperManager;import android.content.Intent;import android.os.IBinder;public class ChangeService extends Service{// 定义定时更换的壁纸资源int[] wallpapers = new int[]{R.drawable.shuangta,R.drawable.lijiang,R.drawable.qiao,R.drawable.shui};// 定义系统的壁纸管理服务WallpaperManager wManager;// 定义当前所显示的壁纸int current = 0;@Overridepublic int onStartCommand(Intent intent, int flags, int startId){// 如果到了最后一张,系统重新开始if(current >= 4)current = 0;try{// 改变壁纸wManager.setResource(wallpapers[current++]);}catch (Exception e){e.printStackTrace();}return START_STICKY;}@Overridepublic void onCreate(){super.onCreate();// 初始化WallpaperManagerwManager = WallpaperManager.getInstance(this);}@Overridepublic IBinder onBind(Intent intent){return null;}}
当然设置壁纸不只是用到AlarmManager服务的setRepeating()方法。还用到了壁纸管理服务WallpaperManager。通过WallpaperManager.getInstance()进行实例化,setResource()方法进行壁纸的更换。
记得在AndroidMainfest.xml文件中授予相应权限:
<user-permission android:name="android.permission.SET_WALLPAPER"/>
- AlarmManager手机闹钟服务
- AlarmManager(手机闹钟服务)
- 手机闹钟服务 AlarmManager
- 手机闹钟服务(AlarmManager)实例
- AlarmManager(闹钟服务)
- AlarmManager-闹钟服务
- 使用AlarmManager服务设置闹钟
- 安卓AlarmManager(闹钟服务)
- Android-闹钟-AlarmManager-后台服务
- android开发笔记之 AlarmManager(闹钟服务)
- Android提供的系统服务之--AlarmManager(闹钟服务)
- Android提供的系统服务之--AlarmManager(闹钟服务)
- Alarm Clock---手机闹钟服务
- Android基础入门教程——10.5 AlarmManager(闹钟服务)
- Android基础入门教程——10.5 AlarmManager(闹钟服务)
- 闹钟 AlarmManager PendingIntent
- 闹钟 AlarmManager PendingIntent
- 闹钟 AlarmManager PendingIntent
- smarty基础应用源码
- c语言的extern和static
- 总线协议类(总结接触到的总线类型)
- Qt setInputMask 掩码含义
- 微指数批量查询工具V1.0发布了
- AlarmManager手机闹钟服务
- maven setting.xml 详解
- Singleton单例模式
- 【Java学习笔记】基础知识学习18【一个小文件的复制方法】
- 先验概率与后验概率
- pipe和FIFO
- 易佰关键词查询工具 2013 V2.0
- 【Linux编译安装httpsqs】
- 键盘驱动