亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android基于廣播事件機制實現簡單定時提醒功能代碼

2020-04-11 11:22:51
字體:
來源:轉載
供稿:網友

本文實例講述了Android基于廣播事件機制實現簡單定時提醒功能代碼。分享給大家供大家參考,具體如下:

1.Android廣播事件機制

Android的廣播事件處理類似于普通的事件處理。不同之處在于,后者是靠點擊按鈕這樣的組件行為來觸發,而前者是通過構建Intent對象,使用sentBroadcast()方法來發起一個系統級別的事件廣播來傳遞信息。廣播事件的接收是通過定義一個繼承Broadcast Receiver的類實現的,繼承該類后覆蓋其onReceive()方法,在該方法中響應事件。Android系統中定義了很多標準的Broadcast Action來響應系統廣播事件。例如:ACTION_TIME_CHANGED(時間改變時觸發)。但是,我們也可以自己定義Broadcast Receiver接收廣播事件。

2.實現簡單的定時提醒功能

主要包括三部分部分:

1) 定時 - 通過定義Activity發出廣播
2) 接收廣播 - 通過實現BroadcastReceiver接收廣播
3)  提醒 - 并通過Notification提醒用戶

現在我們來具體實現這三部分:

2.1 如何定時,從而發出廣播呢?

現在的手機都有鬧鐘的功能,我們可以利用系統提供的鬧鐘功能,來定時,即發出廣播。具體地,在Android開發中可以用AlarmManager來實現。

AlarmManager 提供了一種系統級的提示服務,允許你安排在某個時間執行某一個服務。
AlarmManager的使用步驟說明如下:

1)獲得AlarmManager實例: AlarmManager對象一般不直接實例化,而是通過Context.getSystemService(Context.ALARM_SERVIECE) 方法獲得
2)定義一個PendingIntent來發出廣播。
3)調用AlarmManager的相關方法,設置定時、重復提醒等功能。

詳細代碼如下(ReminderSetting.java):

package com.Reminder;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.View;import android.widget.Button;/*** trigger the Broadcast event and set the alarm*/public class ReminderSetting extends Activity {  Button btnEnable;  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    /* create a button. When you click the button, the alarm clock is enabled */    btnEnable=(Button)findViewById(R.id.btnEnable);    btnEnable.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        setReminder(true);      }    });  }  /**   * Set the alarm    *    * @param b whether enable the Alarm clock or not    */  private void setReminder(boolean b) {    // get the AlarmManager instance     AlarmManager am= (AlarmManager) getSystemService(ALARM_SERVICE);    // create a PendingIntent that will perform a broadcast    PendingIntent pi= PendingIntent.getBroadcast(ReminderSetting.this, 0, new Intent(this,MyReceiver.class), 0);    if(b){      // just use current time as the Alarm time.       Calendar c=Calendar.getInstance();      // schedule an alarm      am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi);    }    else{      // cancel current alarm      am.cancel(pi);    }  }}

2.2 接收廣播

新建一個class 繼承BroadcastReceiver,并實現onReceive()方法。當BroadcastReceiver接收到廣播后,就會去執行OnReceive()方法。所以,我們在OnReceive()方法中加上代碼,當接收到廣播后就跳到顯示提醒信息的Activity。具體代碼如下( MyReceiver.java):

package com.Reminder;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;/*** Receive the broadcast and start the activity that will show the alarm*/public class MyReceiver extends BroadcastReceiver {  /**   * called when the BroadcastReceiver is receiving an Intent broadcast.   */  @Override  public void onReceive(Context context, Intent intent) {    /* start another activity - MyAlarm to display the alarm */    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    intent.setClass(context, MyAlarm.class);    context.startActivity(intent);  }}

注意:創建完BroadcastReceiver后,需要在AndroidManifest.xml中注冊:

<receiver android:name=".MyReceiver">      <intent-filter>     <action android:name= "com.Reminder.MyReceiver" />   </intent-filter> </receiver>

2.3 提醒功能

新建一個Activity,我們在這個Activity中通過Android的Notification對象來提醒用戶。我們將添加提示音,一個TextView來顯示提示內容和并一個button來取消提醒。

其中,創建Notification主要包括:

1)獲得系統級得服務NotificationManager,通過 Context.getSystemService(NOTIFICATION_SERVICE)獲得。
2)實例化Notification對象,并設置各種我們需要的屬性,比如:設置聲音。
3)調用NotificationManager的notify()方法顯示Notification

詳細代碼如下:MyAlarm.java

package com.Reminder;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore.Audio;import android.view.View;import android.widget.Button;import android.widget.TextView;/*** Display the alarm information */public class MyAlarm extends Activity {  /**   * An identifier for this notification unique within your application   */  public static final int NOTIFICATION_ID=1;   @Override  protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.my_alarm);    // create the instance of NotificationManager    final NotificationManager nm=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);    // create the instance of Notification    Notification n=new Notification();    /* set the sound of the alarm. There are two way of setting the sound */     // n.sound=Uri.parse("file:///sdcard/alarm.mp3");    n.sound=Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "20");    // Post a notification to be shown in the status bar    nm.notify(NOTIFICATION_ID, n);    /* display some information */    TextView tv=(TextView)findViewById(R.id.tvNotification);    tv.setText("Hello, it's time to bla bla...");    /* the button by which you can cancel the alarm */    Button btnCancel=(Button)findViewById(R.id.btnCancel);    btnCancel.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View arg0) {        nm.cancel(NOTIFICATION_ID);        finish();      }    });  }}

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久天天躁狠狠躁夜夜av| 精品久久久久久久久国产字幕| 亚洲精品一区在线观看香蕉| 亚洲精品女av网站| 精品偷拍各种wc美女嘘嘘| 成人在线观看视频网站| 国产一区二区三区网站| 亚洲精品久久久久久久久久久久久| 国产精品久久久久福利| 久久久精品2019中文字幕神马| 亚洲午夜女主播在线直播| 欧美亚洲另类激情另类| 91精品视频在线看| 欧美一级免费视频| 亚洲网站视频福利| 亚洲国产高清高潮精品美女| www日韩中文字幕在线看| 性欧美视频videos6一9| 亚洲成人激情视频| 中文字幕亚洲欧美一区二区三区| 91av视频在线免费观看| 91精品国产高清久久久久久| 97视频在线观看播放| 国产视频久久久久| 亚洲香蕉成视频在线观看| 国产+成+人+亚洲欧洲| 成人a在线视频| 亚洲人成网站免费播放| 久久91精品国产91久久跳| 亚洲欧美日韩天堂| 欧洲亚洲在线视频| 国产91精品高潮白浆喷水| 97在线视频免费| 久久久精品久久| 毛片精品免费在线观看| 欧美亚洲一区在线| 色偷偷91综合久久噜噜| 欧美床上激情在线观看| 亚洲精品女av网站| 亚洲国产私拍精品国模在线观看| 欧美高清性猛交| 成人疯狂猛交xxx| 欧洲中文字幕国产精品| 91av在线视频观看| 91av国产在线| 一区二区三区国产视频| 91亚洲精品久久久久久久久久久久| 精品久久久一区二区| 欧美性20hd另类| 亚洲色图18p| 亚洲欧美中文日韩v在线观看| 欧美日韩一区二区三区在线免费观看| 中文字幕少妇一区二区三区| 欧美老女人性视频| 91精品国产综合久久久久久蜜臀| 日韩欧美亚洲范冰冰与中字| 亚洲大胆人体在线| 日韩中文有码在线视频| 永久免费毛片在线播放不卡| 欧美最顶级丰满的aⅴ艳星| 欧美国产中文字幕| 国产欧美va欧美va香蕉在| 欧美成人午夜视频| 久久久久久久999| 久久久97精品| 午夜精品一区二区三区在线视| 欧美天天综合色影久久精品| 亚洲久久久久久久久久| 中文字幕日韩在线观看| 日韩毛片在线看| 欧美日韩精品在线播放| 日韩在线精品一区| 亚洲欧美日韩精品久久亚洲区| 91精品久久久久久综合乱菊| 成人免费淫片视频软件| 亚洲一区二区免费| 欧亚精品在线观看| 成人国产精品久久久| 中文字幕日韩欧美在线视频| 国产99视频在线观看| 日韩视频免费中文字幕| 日韩欧美aⅴ综合网站发布| 疯狂做受xxxx高潮欧美日本| 欧美在线视频免费观看| 亚洲xxxx做受欧美| 欧美成人免费大片| 国产网站欧美日韩免费精品在线观看| 人妖精品videosex性欧美| 这里只有精品丝袜| 亚洲加勒比久久88色综合| 久久婷婷国产麻豆91天堂| 日韩精品丝袜在线| 欧美日韩精品二区| 欧美激情视频一区二区| 欧美精品久久久久久久免费观看| 日韩中文字幕在线精品| 亚洲精品福利视频| 久久中文字幕在线视频| 久久亚洲精品国产亚洲老地址| 久久综合久久美利坚合众国| 亚洲精品美女视频| 亚洲视频在线免费看| 午夜美女久久久久爽久久| 91在线色戒在线| 国产精品久久久久久中文字| 日韩中文字幕在线视频| 久久久久久久电影一区| 亚洲高清久久久久久| 日本三级久久久| 97色伦亚洲国产| 欧美日本中文字幕| 国产精品欧美一区二区| 91九色在线视频| 国产视频精品免费播放| 深夜福利日韩在线看| 成人免费视频在线观看超级碰| 日韩亚洲欧美中文在线| 91精品91久久久久久| 日本久久精品视频| 国产精品白丝av嫩草影院| 国产在线拍揄自揄视频不卡99| 欧美亚洲在线视频| 国产精品免费电影| 亚洲国产天堂久久综合网| 亚洲性生活视频在线观看| 国内精品久久久久影院优| 欧美在线一区二区三区四| 青青草原成人在线视频| 国产精品h片在线播放| 精品国产一区二区三区久久狼5月| 免费成人高清视频| 国产国语刺激对白av不卡| 国产视频精品xxxx| 亚洲综合自拍一区| 高清亚洲成在人网站天堂| 国模精品系列视频| 欧美精品久久久久久久久久| 国产va免费精品高清在线| 美女久久久久久久久久久| 国产精品精品久久久久久| 亚洲最新在线视频| 黑人极品videos精品欧美裸| 国产精品精品一区二区三区午夜版| 91情侣偷在线精品国产| 成人精品视频在线| 日本欧美爱爱爱| 日韩有码视频在线| 日韩在线观看免费av| 超在线视频97| 国产精品视频公开费视频| 国产91在线高潮白浆在线观看| 国产97在线|亚洲| 色老头一区二区三区| 一区国产精品视频| 欧美性理论片在线观看片免费| 精品中文字幕视频| 亚洲视频专区在线| 欧美日韩久久久久| 欧美激情日韩图片| 日韩国产一区三区| 伊人成人开心激情综合网| 国产欧美精品久久久| 久久久精品视频成人| 欧美大奶子在线|