Android提供的系统服务之

Android提供的系统服务之–AlarmManager(闹钟服务)

——转载请注明出处:coder-pig

本节引言:

本节主要介绍的是Android系统服务中的—AlarmManager(闹钟服务),

除了开发手机闹钟外,更多的时候是作为一个全局的定时器,通常与Service

结合,在特定时间启动其他的组件!本节就来对这个AlarmManager来进行解析

同时通过小闹钟与自动换壁纸来演示这个AlarmManager的用法,好了,开始本节的

内容吧!

本节正文:

1.概念与相关属性方法图:

2.例子演示

好了,光看不练可不行,下面就来写两个简单的例子:

分别是定时闹钟提醒的实现与定时更换手机壁纸,一个是调用Activity,一个是调用Service

①一个简单的闹钟:

MainActivity.java:

package com.jay.example.alarmmanagerdemo;import java.util.Calendar;import android.app.Activity;import android.app.AlarmManager;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;import android.widget.Toast;public class MainActivity extends Activity {private Button btnSetClock;private Button btnbtnCloseClock;private AlarmManager alarmManager;private PendingIntent pi;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btnSetClock = (Button) findViewById(R.id.btnSetClock);btnbtnCloseClock = (Button) findViewById(R.id.btnCloseClock);// ①获取AlarmManager对象:alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);// 指定要启动的是Activity组件,通过PendingIntent调用getActivity来设置Intent intent = new Intent(MainActivity.this, ClockActivity.class);pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);btnSetClock.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Calendar currentTime = Calendar.getInstance();// 弹出一个时间设置的对话框,供用户选择时间new TimePickerDialog(MainActivity.this, 0,new OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view,int hourOfDay, int minute) {//设置当前时间Calendar c = Calendar.getInstance();c.setTimeInMillis(System.currentTimeMillis());// 根据用户选择的时间来设置Calendar对象c.set(Calendar.HOUR, hourOfDay);c.set(Calendar.MINUTE, minute);// ②设置AlarmManager在Calendar对应的时间启动ActivityalarmManager.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(), pi);// 提示闹钟设置完毕:Toast.makeText(MainActivity.this, "闹钟设置完毕~",Toast.LENGTH_SHORT).show();}}, currentTime.get(Calendar.HOUR_OF_DAY), currentTime.get(Calendar.MINUTE), false).show();btnbtnCloseClock.setVisibility(View.VISIBLE);}});btnbtnCloseClock.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {alarmManager.cancel(pi);btnbtnCloseClock.setVisibility(View.GONE);Toast.makeText(MainActivity.this, "闹钟已取消", Toast.LENGTH_SHORT).show();}});}}

ClockActivity.java:

package com.jay.example.alarmmanagerdemo;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;public class ClockActivity extends Activity {private MediaPlayer mediaPlayer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_clock);mediaPlayer = MediaPlayer.create(this, R.raw.pig);//mediaPlayer.setLooping(true);mediaPlayer.start();//创建一个闹钟提醒的对话框,点击确定关闭铃声与页面new AlertDialog.Builder(ClockActivity.this).setTitle("闹钟").setMessage("小猪小猪快起床~").setPositiveButton("关闭闹铃", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mediaPlayer.stop();ClockActivity.this.finish();}}).show();}}!!!另外别忘了需要在AndroidManifest.xml对ClockActivity进行注册哦!

运行截图:

有山就有路,有河就能渡。

Android提供的系统服务之

相关文章:

你感兴趣的文章:

标签云: