通知(ステータスバー通知)の詳しい説明


このセクションの紹介:

このセクションでは、Android のステータス バーに通知情報を表示するために使用されるコントロールについて説明します: 通知、ほとんどの場合は通知だと思います Android を研究している人なら誰でも Android に精通しており、インターネット上の通知の使用に関するチュートリアルの多くは 2.x に基づいています。 現在、一般的な Android デバイスは基本的に 4.x 以降、さらには 5.0 以降です。 全部違うんです!このセクションでは、4.x 以降に基づく通知と 5.0 以降に基づく通知について説明します。 上級チュートリアルの Android 5.0 の新機能の章で説明します~

公式ドキュメントからの通知のいくつかの紹介:

デザイン思考: Android 4.4 以前の通知

翻訳: 通知

APIドキュメント: 通知

上記のWebサイトにアクセスするにはラダーが必要な場合があります~


1. 設計ドキュメント部分の解釈


1) 通知

1.png

の基本的なレイアウト上記のコンポーネントは順番に並んでいます:

  • アイコン/写真: 大きいアイコン
  • Title/Name: タイトル
  • メッセージ: コンテンツ情報
  • タイムスタンプ: 通知時刻、デフォルトは通知時刻です。システムが通知を送信します。setWhen() によって設定することもできます。
  • セカンダリアイコン: 小さなアイコン
  • コンテンツテキスト、小さなアイコンの左側のテキスト

2) 拡張レイアウト

Jelly Bean では、通知の詳細にさらに多くのイベントを提供できます。レイアウトを拡張することで、メッセージの最初の数行や画像のプレビューを表示できます。これにより、ユーザーはより多くのコンテンツ (場合によってはメッセージ全体) を表示できるようになります。ユーザーは 2 本の指でピンチズームまたはスライドして、拡張レイアウトを開くことができます。 Android では、アプリケーション開発時に使用できる 1 つのメッセージに対して 2 つの拡張レイアウト (テキストと画像) が提供されています。

2.png

3.png

その他の設計事項については、個別には説明しませんので、興味があれば、上記の API ドキュメントを参照してください。 この通知はバージョン 4.x 以降で変更できます。私たちがさらに気を付けているのは、 これを使用するコードをどのように記述するか? 通知の使用方法を学びましょう!


2. 通知の基本的な使用プロセス

ステータス通知バーには、主にNotificationとNotificationManagerの2つのクラスが含まれます

Notification: 通知バーの各属性に対応する通知情報クラス

: ステータス バー通知の管理クラスであり、通知の送信や通知のクリアなどの操作を担当します。

使用される基本プロセス:

  • ステップ 1. NoticeManager オブジェクトを取得します。 NoticeManager mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  • ステップ 2. 通知バーの Builder 構築クラスを作成します。 Notice.Builder mBuilder = new Notice.Builder(this);
  • ステップ 3. タイトル、コンテンツ、アイコン、アクションなど、Builder に関連する設定を行います。
  • ステップ 4.Builder の Build() メソッドを呼び出して通知に値を割り当てます
  • ステップ 5.NotificationManager の notify() メソッドを呼び出して通知を送信します。
  • 追記:さらに、NotificationManager の cancel() メソッドを呼び出して通知をキャンセルすることもできます

3. いくつかの関連メソッドを設定します:

Notification.Builder mBuilder = new Notice.Builder(this );

次に、次の関連メソッドを呼び出して設定します: (公式 API ドキュメント: Notice.Builder) 一般的に使用される方法は次のとおりです:

  • setContentTitle(CharSequence): タイトルを設定します
  • setContentText(CharSequence): コンテンツを設定します
  • setSubText(CharSequence): コンテンツの下に短いテキスト行を設定します
  • setTicker(CharSequence) : コレクションの設定 通知受信時に上部に表示されるテキスト情報
  • setWhen(long): 通知時間を設定します。通常は通知受信時に System.currentTimeMillis() に設定されます
  • setSmallIcon(int ): 右下隅の小さなアイコンを設定します。この小さなアイコンは、通知を受信したときに上部にも表示されます
  • setLargeIcon(ビットマップ): 左側の大きなアイコンを設定します
  • setAutoCancel( boolean): ユーザーが通知パネルをクリックして通知をキャンセルするかどうか (デフォルトはキャンセルしない)
  • setDefaults(int): 通知にサウンド、フラッシュ、振動の効果を追加する最も簡単な方法 デフォルト属性を使用すると、複数の属性を組み合わせることができます。色 ライトリマインダー)
    Notification.DEFAULT_ALL(上記の 3 つのリマインダーをすべてデフォルトで追加します)
    setVibrate
    (long[]): 振動モードを設定します。例: setVibrate(new long[] {0,300,500,700}) ; 0ms 遅延、その後 300ms 振動、500ms 遅延、 その後、700ms 振動します。振動の使い方は後ほど説明します。
    setLights(int argb, int onMs, int offMs): 3 色のライトを設定します。パラメーターは次のとおりです: ライトの色、 一部の携帯電話には 3 色のライトがありません。 さらに、3 色のライト リマインダーをサポートするには、通知のフラグを Notice.FLAG_SHOW_LIGHTS に設定する必要もあります。
  • setSound
    (Uri): 通知を受信したときの着信音を設定します。システムを使用することも、自分で設定することもできます。例は次のとおりです:
  • .setDefaults(Notification.DEFAULT_SOUND) //デフォルトの着信音を取得します。 (Uri.parse("file:///sdcard/xx/xx.mp3")) //カスタム着信音を取得
  • .setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5")) //Android マルチメディア ライブラリで着信音を取得します
  • setOncoming(boolean): true に設定すると、進行中の通知であることが示されます。それらは通常、表現するために使用されます ユーザーが積極的に関与している (音楽の再生など) か、何らかの方法で待機しているためにデバイスを占有しているバックグラウンド タスク (ファイルのダウンロード、 同期操作、アクティブなネットワーク接続)

  • setProgress(int,int,boolean): プログレスバーで通知を設定します パラメータは、進行状況バーの最大値、現在の進行状況、進行状況が不確実かどうかです。 確認済みのプログレスバーの場合: setProgress(max, progress, false) を呼び出して通知を設定します。 進行状況を更新するときは、ここで進行状況を更新する通知を開始し、ダウンロードが完了したら進行状況バーを削除します。 、setProgress(0, 0, false) を呼び出すだけです。不定の(継続的にアクティブな)プログレスバーの場合、 これは、処理の進行状況が正確に分からない場合でもアクティビティが継続していることを示しているため、setProgress(0, 0, true) が呼び出されます。 、操作が終了したら、setProgress(0, 0, false) を呼び出し、通知を更新してインジケーターバーを削除します
  • setContentIntent(PendingIntent): PendingIntent は Intent とは少し異なり、実行回数を設定できます。 主にリモート サービス通信、アラーム、通知、ランチャー、テキスト メッセージに使用されます。たとえば、ここを通過します 保留中の開始アクティビティ: getActivity(Context, int, Intent, int)。もちろん、サービスまたはブロードキャストを開始することもできます PendingIntent のビット識別子 (4 番目のパラメーター):
    FLAG_ONE_SHOT は、返された PendingIntent が 1 回のみ実行でき、実行後に自動的にキャンセルされることを意味します。
    FLAG_NO_CREATE は、記述された PendingIntent が存在しない場合、対応する PendingIntent を意味します。 NULL
    FLAG_CANCEL_CURRENTを返すということは、対応するPendingIntentがすでに存在しており、前者をキャンセルしてから新しいPendingIntentを作成することを意味します。 これはデータを最新の状態に保つのに役立ち、インスタント メッセージングの通信シナリオで使用できます
    FLAG_UPDATE_CURRENT 更新された PendingIntent を表します
    使用例:

    //点击后跳转Activity
    Intent intent = new Intent(context,XXX.class);  
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);  
    mBuilder.setContentIntent(pendingIntent)


  • setPriority(int): 優先度を設定します:

    優先User
    MAX重要かつ緊急の通知。このイベントは一刻を争うものであるか、すぐに処理する必要があることをユーザーに通知します。
    HIGH高優先度は、ショートメッセージやチャットなど、ユーザーにとってより興味のある重要なコミュニケーションコンテンツに使用されます。
    DEFAULTデフォルトの優先度は、特別な優先度分類のない通知に使用されます。
    LOW低優先度では、緊急ではないイベントをユーザーに通知できます。
    MINは、バックグラウンドメッセージ(天気や位置情報など)に使用されます。最も優先度の低い通知はステータス バーにアイコンのみを表示し、ユーザーが通知ドロワーをプルダウンした場合にのみコンテンツが表示されます。
    対応する属性: Notice.PRIORITY_HIGH...

4. コード例: 最も一般的な通知:

通知の使用法を体験するための最も簡単な例を書いてみましょう:

レンダリングの実行 :

4.gif

キーコード:

ここにMainActivity.javaのコードを直接投稿してください:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Context mContext;
private NotificationManager mNManager;
private Notification notify1;
Bitmap LargeBitmap = null;
private static final int NOTIFYID_1 = 1;

private Button btn_show_normal;
private Button btn_close_normal;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main) ;
mContext = MainActivity.this;
//创建大图标的Bitmap
LargeBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.iv_lc_icon);
mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
bindView();

}


private void bindView() {
btn_show_normal = (ボタン) findViewById(R.id.btn_show_normal);
btn_close_normal = (ボタン) findViewById(R.id.btn_close_normal);
btn_show_normal.setOnClickListener(this);
btn_close_normal .setOnClickListener(this);
}


@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_show_normal:
//決定义一个PendingIntent点击通知後启アニメーション一个Activity
Intent it = new Intent(mContext, OtherActivity. class);
PendingIntent pit = PendingIntent.getActivity(mContext, 0, it, 0);
通 // 画像を設定し、タイトル、送信時刻、プロンプト方法、その他の属性を通知します
notification.builder mbuilder = new notification.builder (this); Text (「私には、あなたを居られなくする 100 の方法があります~」) 。 .setTicker("葉良チェン情報から送信されたメッセージを受信しました ~ ") // 情報を受信した後にステータスバーに表示されるテキスト情報
.setwhen (System.CurrenttiMillis ()) // 通知時間を設定します
.Setsmallicon (R .MIPMAP.IC_LOL_ICON) // 小さいアイコンを設定します
.Setlargeicon (LargeBitmap) 。.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.biaobiao)) //カスタム プロンプト サウンドを設定します
.setAutoCancel(true) 設定後、[通知をキャンセル] をクリックします
.setContentIntent(PIT);
}
}


コメントは非常に詳しいので、一つ一つ詳しくは説明しません~


5. コードサンプルのダウンロード:

NotificationDemo.zip

このセクションの概要:

さて、このセクションでは、バージョン 4.x の通知の基本的な使い方を紹介します。とても簡単ですよね~
もちろん、興味があれば、関連する情報を自分で確認することもできます。ここでは簡単です。 勉強してみました〜 ちなみに、このセクションの一部は次のブログを参照しています。リンクを貼ってください。 Android 通知バー通知の統合に関する総合的な研究 (デモを見ると完全に理解できます) )かなり詳しく書いてあります〜このセクションは以上です、ありがとうございます〜