1. 程式人生 > >android AlarmManager使用小例子

android AlarmManager使用小例子

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);
		}
		
		
	}

}

整理自教程

相關推薦

android AlarmManager使用例子

import java.util.Calendar; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import androi

Android例子:使用反射機制來讀取圖片制作一個圖片瀏覽器

onclick lac protected blank pri tar lec 存儲 current 效果圖:                                 工程文件夾:   該例子可供於新手參考練習,如果有哪裏不對的地方,望指正>-< 《

Android手機懸浮視窗例子

–主頁面——– //佈局中就一個Button public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInsta

Android Studio入門例子

介面 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr

【菜鳥教程】Android studio 使用Rxjava/RxAndroid簡單例子【更新帖】

Rxjava現在挺火,總的來說就是來解決非同步操作的。 具體詳細解釋,csdn有的是,不贅述,這裡只是提供例子。我也剛接觸,大神勿噴請繞道。2016-09-13 最簡單的例子(迴圈1秒載入輸出日誌一次),開篇第一步在你的build.grade裡面的depend

android:json解析的兩個工具:Gson和Jackson的使用例子

1.簡介 json是android與伺服器通訊過程中常用的資料格式,例如,如下是一個json格式的字串: {"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","ag

Android物件序列化(Activity之間傳遞物件,Parcelable例子

Android中為了能夠在Activity之間傳遞值,需要只用Intent中的put函式。 其中bundle.putParcelable可以實現傳遞物件,但是這個物件的類必須實現Parcelable接口才能夠使用。 下面是一個簡單的在Activity之間傳遞物件的例子

Android 3D jpct-ae 一個場景例子

         jpct-ae 一個場景小例子,載入了一些3ds模型,並且實現了手指觸控移動,實現了上下左右鍵。但是,此處有兩個3ds模型在最終的畫面裡面沒有顯示,程式也沒有報錯,不知道是為什麼,這一點讓我很納悶。 注意:1,Loader.load3DS返回的是Obje

Pro Android學習筆記(三九):Fragment(4):基礎例子-續

Step 3:實現簡介顯示類DetailFragment 在Activity的佈局xml中,對DetailFragment並沒有指定class屬性,故在setContentView()中不會自動呼叫該類,而是通過編寫showDetail(int index)來呼叫,該函式的具體編碼以後在描述,我們先來看看D

Android通知Notification入門例子(一)

       通知(Notification)是 Android 系統中比較有特色的一個功能,當某個應用程式希望向使用者發出一些提示資訊,而該應用程式又不在前臺執行時,就可以藉助通知來實現。發出一條通知後,手機最上方的狀態列中會顯示一個通知的圖示,下拉狀態列後可以看到通知的

步步為營-65-線程例子

res rgs int alt ntc gen orm read win 1 搖獎機 using System; using System.Collections.Generic; using System.ComponentModel; using System.Da

巧婦能為少米之炊(1)——Android內存下的生存之道

直接內存 -a 響應時間 分區 popu 身邊 執行 人的 算法 常常聽到身邊用安卓的朋友抱怨手機卡頓,內存動不動就快沒了。而Google聲稱在512M的內存下也能流暢執行Android 4.4。究竟它做了什麽? 總結一下它主要做了四件事: 1.優化內核,使用Activ

多線程 例子

set rgs 退出 開始 rri let 重新 ted 處理 1. 線程小例子 /** * 失去一日甚易,欲得回已無途! * 2016-11-17下午1:43:51 * * 進程:可以包含一個或者多個線程! cp

bootstrap01登錄例子

hicon 引入 pan itl javascrip set 用戶名 phi cnblogs 引入需要的bootstrap文件 <!DOCTYPE html> <html> <head lang="en"> <m

html的例子

var () doc closed 模擬 http 需要 class logs 常用的前端實例: 1略 2、在網頁商城中的圖片當我們把鼠標放上去之後,圖片會顯示一個有顏色的外邊框,圖片某一部分的字體的顏色並發生改變 鼠標放上去之前 鼠標放上去之後: 實

java中的String類的不可變性的例子

變化 str void string類 對象 style ima blog com 在java語言中,String類具有不可變性,即常量字符串不可更改。下面的一個小例子簡單演示相關概念。 1 public class test { 2 public stati

ADF12C+Spring集成例子

spring adf12c 集成 本文出自 “ADF推廣員” 博客,請務必保留此出處http://feitai.blog.51cto.com/9103016/1950235ADF12C+Spring集成小例子

dom4j使用的例子

int ml2 read sel eval console ati ack val product.xml: <?xml version="1.0" encoding="UTF-8"?> <root> <product>

雙層for循環 各種例子

-1 ext static can 行數 () ann ++ ati /* * ********* 執行流程:現從外層循環開始,外層執行一次內層執行一圈 * ********* i=1 j 1-9打印* * ********* i=2 j

macaca測試web例子

class bdr ant 測試結果 文檔 () 官方 quit 中心 上午剛把macaca的環境在公司的電腦上吧web 端的環境給搭建好,於是乎,看看網上的例子,看看官方的文檔 https://macacajs.github.io/wd.py/ 可以在這個鏈接看到原滋