import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TimePicker;
public class MainActivity extends Activity {
private EditText et_content;
private TimePicker timePicker;
//获得闹钟管理者。
private AlarmManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
et_content = (EditText)findViewById(R.id.et_content);
timePicker = (TimePicker)findViewById(R.id.timePicker);
//初始化闹钟管理者。
manager = (AlarmManager)getSystemService(ALARM_SERVICE);
}
public void setAlarm(View v){
//备忘内容。
String content = et_content.getText().toString();
//闹钟的时间。
int hour = timePicker.getCurrentHour();
int minute = timePicker.getCurrentMinute();
//获得准确的时间。
Calendar c = Calendar.getInstance();
//c里面的年月日都是ok的,我们要将c里面的 小时和分钟变成 设置的小时和分钟。
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
//开始设置闹钟。
/*
* 延迟意图
* PendingIntent
* */
//我们希望到点的时候,能够启动一个界面Activity,来显示备忘内容。
Intent intent = new Intent(this, AlarmActivity.class);
intent.putExtra("msg", content);
//将intent封装到PendingIntent中。
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 100, intent, PendingIntent.FLAG_ONE_SHOT);
manager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);
}
//点击,设置重复闹钟。
public void setRepeatingAlarm(View v){
Intent intent = new Intent(this, RepeatingAlarmActivity.class);
intent.putExtra("msg", "重复的事情多次提醒!!!");
PendingIntent pi = PendingIntent.getActivity(this, 101, intent, 0);
//设置多次闹钟。
/*manager.setRepeating(AlarmManager.RTC_WAKEUP,
triggerAtTime 第一次触发的时间,
interval 间隔时间 ,
pi);*/
//假设当前时间15s之后,就开始第一次触发;然后每隔20s再次触发。
Calendar c = Calendar.getInstance();
c.set(Calendar.SECOND, c.get(Calendar.SECOND) + 15);
manager.setRepeating(AlarmManager.RTC_WAKEUP,
c.getTimeInMillis(),
20*1000,
pi);
}
}
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class RepeatingAlarmActivity extends Activity {
private TextView tv;
private MediaPlayer player;
private AlarmManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_repeating_alarm);
init();
}
private void init() {
tv = (TextView) findViewById(R.id.tv);
player = new MediaPlayer();
try {
player.reset();
player.setDataSource("/mnt/sdcard/qf.mp3");
player.prepare();
player.start();
} catch (Exception e) {
e.printStackTrace();
}
}
// 停止多次闹钟。
public void stop(View v) {
// 1,关音乐。
player.reset();
player.release();
player = null;
// 2,关界面。
finish();
//3,关闭多次闹钟。
Intent intent = new Intent(this, RepeatingAlarmActivity.class);
intent.putExtra("msg", "重复的事情多次提醒!!!");
PendingIntent pi = PendingIntent.getActivity(this, 101, intent, 0);
manager = (AlarmManager)getSystemService(ALARM_SERVICE);
manager.cancel(pi);
}
// 继续多次闹钟。
public void resume(View v) {
// 1,关音乐。
player.reset();
player.release();
player = null;
// 2,关界面。
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
if(player!=null){
resume(null);
}
}
}
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class AlarmActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm);
tv = (TextView)findViewById(R.id.tv);
String msg = getIntent().getStringExtra("msg");
if(msg!=null){
tv.setText(msg);
}
}
}
整理自教程