android AlarmManager使用小例子

28 篇文章 0 订阅
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);
		}
		
		
	}

}

整理自教程





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值