Android Notificationの紹介


Notificationは、デスクトップのステータス通知バーです.これは主に3つの主要なクラスに関連しています.
Notification:通知の各属性を設定します.
NotificationManager:通知の送信とキャンセルを担当します
Notification.Builder:Notification内など、Notificationオブジェクトを作成します.すべてのflagsを制御しながら、Notificationのスタイルを構築するのに非常に便利です.
主な役割:
1.ステータスバーアイコンを作成します.
2.拡張されたステータスバーウィンドウに追加の情報を表示します(およびIntentを起動します).
3.フラッシュまたはLED.
4.電話が震える.
5.聞こえる警告音(ベル、保存された音声ファイル)を発する.
Notificationは、見えないプログラムコンポーネント(Broadcast Receiver、Service、アクティブでないActivity)が、ユーザーに注意すべきイベントが発生したことを警告する最良の方法です.
次に、この3つのクラスについて説明します.
一、NotificationManager
このクラスはこの3つのクラスの中で最も簡単です.主にNotificationのステータス表示とキャンセルを担当します.主に5つの関数を含む:voidcancel(int id)、void cancel(String tag,int id)、void cancelAll()、void notify(int id,Notification)、notify(String tag,int id,Notification)
この5つの関数を見てみると、このクラスの役割がわかります.ただし、オブジェクトを初期化するときは、次のことに注意してください.
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
二、Notification
このクラスを設定するには、主にNotificationの関連プロパティを設定します.初期化
Notification n = new Notification();
Notificationの中にはたくさんの属性があります.次はいくつかのよく使われるものを選んで紹介します.
iconこれは通知を設定するアイコンです.QQのペンギンのようです
soundこれは通知に設定したときのヒント音です.
tickerTextプロンプトのテキストを設定します.
vibrateが通知すると振動します.
whenが通知する時間を設定
flagこれは興味深いことにステータスバーに通知を表示する方法を設定します.この値はエビに設定できます.
FLAG_NO_CLEARがflagをこの属性に設定すると、通知バーのクリアボタンは表示されません.
FLAG_ONGOING_EVENTがflagをこの属性に設定すると、通知はQQのようにステータスバーに表示されます.
DEFAULT_ALLはすべての属性をデフォルトに設定
DEFAULT_SOUNDプロンプト音をデフォルトに設定
DEFAULT_VIBRATE振動をデフォルトに設定
三、Notification.Builder
このクラスは一般的にNotificationを管理し、Notificationのいくつかの属性を動的に設定するために使用されます.setで設定します.何も言うことはありません.
例を見てください.この例ではxmlに2つのボタンを追加する必要があります.
public class Main extends Activity {
    private Button sendBtn , cancelBtn;
    private Notification n;
    private NotificationManager nm;
    //Notification   ID
    private static final int ID = 1;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //     
        sendBtn = (Button)this.findViewById(R.id.sendBtn);
        cancelBtn = (Button)this.findViewById(R.id.cancelBtn);
        
        //  NotificationManager  
        String service = NOTIFICATION_SERVICE;
        nm = (NotificationManager)this.getSystemService(service);
        
        //   Notification
        n = new Notification();
        //      ,          
        int icon = R.drawable.icon;
        //        ,           
        String tickerText = "Test Notifaction";
        //    
        long when = System.currentTimeMillis();
        
        n.icon = icon;
        n.tickerText = tickerText;
        n.when = when;
        n.flags = Notification.FLAG_NO_CLEAR;
        n.flags = Notification.FLAG_ONGOING_EVENT;
        
        //        
        sendBtn.setOnClickListener(sendClickListener);
        cancelBtn.setOnClickListener(cancelClickListener);
    }
    
    private OnClickListener sendClickListener = new OnClickListener() {
  
  @Override
  public void onClick(View v) {
   //   Intent
   Intent intent = new Intent(Main.this, Main.class);
   //  PendingIntent
   PendingIntent pi = PendingIntent.getActivity(Main.this, 0, intent, 0);
   //      
   n.setLatestEventInfo(Main.this, "My Title", "My Content", pi);
   //    
   nm.notify(ID, n);
   
  }
};

private OnClickListener cancelClickListener = new OnClickListener(){

  @Override
  public void onClick(View v) {
   nm.cancel(ID);
  }
};
}