android通知欄の実現方法分析
この例は、android通知欄の実現方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
最近ずっとtwigeeのソースコードを修正しています。その中の一つはNotification欄に常駐しています。以前書いた時は「通知」というグループにしか現れませんでした。運行しています。グループに入れたいですが、どうやって入れるか分かりません。公式文書を調べてみたら、方法が分かりました。notificationのflagsフィールドに「FLAG_」を追加してください。ONGO ING.イベント」でいいです。同時に私もNotificationの使い方をまとめました。詳細は以下を参照してください
(1)システム定義のNotificationを使用する
以下は例示コードを使用します。
(2)カスタムNotificationを使用する
カスタムNotificationを作成するには、RemoteViewを使用することができます。自分の拡張メッセージを定義するには、まずRemoteViewオブジェクトを初期化し、Notificationのcontent Viewフィールドに伝達して、PendingIntentフィールドをcontent Intentフィールドに渡す必要があります。以下のコードの例は完全なステップです。
1、カスタムメッセージレイアウトview.xmlを作成する
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。
最近ずっとtwigeeのソースコードを修正しています。その中の一つはNotification欄に常駐しています。以前書いた時は「通知」というグループにしか現れませんでした。運行しています。グループに入れたいですが、どうやって入れるか分かりません。公式文書を調べてみたら、方法が分かりました。notificationのflagsフィールドに「FLAG_」を追加してください。ONGO ING.イベント」でいいです。同時に私もNotificationの使い方をまとめました。詳細は以下を参照してください
(1)システム定義のNotificationを使用する
以下は例示コードを使用します。
// NotificationManager
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager)getSystemService(ns);
// Notification
int icon = R.drawable.icon; //
CharSequence tickerText = "Hello"; //
long when = System.currentTimeMillis(); // ,
// Nofification
Notification notification = new Notification(icon,tickerText,when);
/*
*
* notification.defaults |=Notification.DEFAULT_SOUND;
*
* notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
* notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
* , notification flags "FLAG_INSISTENT"
* notification defaults "DEFAULT_SOUND" , sound
*/
/*
*
* notification.defaults |= Notification.DEFAULT_VIBRATE;
* :
* long[] vibrate = {0,100,200,300}; //0 , 100 , 200 300
* notification.vibrate = vibrate;
* long
* notification defaults "DEFAULT_VIBRATE", vibrate
*/
/*
* LED
* notification.defaults |= Notification.DEFAULT_LIGHTS;
* LED :
* notification.ledARGB = 0xff00ff00;
* notification.ledOnMS = 300; //
* notification.ledOffMS = 1000; //
* notification.flags |= Notification.FLAG_SHOW_LIGHTS;
*/
/*
*
* notification.flags |= FLAG_AUTO_CANCEL; //
* notification.flags |= FLAG_INSISTENT; // ,
* notification.flags |= FLAG_ONGOING_EVENT; // "Ongoing" " "
* notification.flags |= FLAG_NO_CLEAR; // " " , ,
* // FLAG_ONGOING_EVENT
* notification.number = 1; //number ,
* // , 1
* notification.iconLevel = ; //
*/
//
Context context = getApplicationContext(); //
CharSequence contentTitle = "My Notification"; //
CharSequence contentText = "Hello World!"; //
Intent notificationIntent = new Intent(this,Main.class); // Activity
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
// Notification NotificationManager
mNotificationManager.notify(0,notification);
通知を更新するには、notificationを設定した後、再度setLatestEventInfoを呼び出して、再度通知を送るだけでいいです。つまり、再度notifyを呼び出します。(2)カスタムNotificationを使用する
カスタムNotificationを作成するには、RemoteViewを使用することができます。自分の拡張メッセージを定義するには、まずRemoteViewオブジェクトを初期化し、Notificationのcontent Viewフィールドに伝達して、PendingIntentフィールドをcontent Intentフィールドに渡す必要があります。以下のコードの例は完全なステップです。
1、カスタムメッセージレイアウトview.xmlを作成する
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ImageView android:id="@+id/image" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_marginRight="10dp" />
<TextView android:id="@+id/text" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:textColor="#000" />
</LinearLayout>
2、プログラムコードの中でRemoteViewの方法を使ってイメージとtextを定義します。そしてRemoteViewオブジェクトをcontentViewフィールドに送る。
RemoteViews contentView = new RemoteViews(getPackageName(),R.layout.view);
contentView.setImageViewResource(R.id.image,R.drawable.icon);
contentView.setTextViewText(R.id.text,”Hello,this message is in a custom expanded view”);
notification.contentView = contentView;
3、Notificationのcontent IntentフィールドのためにIntentを定義します。(注意してください。カスタムViewを使うなら、setLatestEventInfoは必要ないです。()
Intent notificationIntent = new Intent(this,Main.class);
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.contentIntent = contentIntent;
4、通知を送信する
mNotificationManager.notify(2,notification);
以下はすべての例示コードです。
// NotificationManager
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager)getSystemService(ns);
// Notification
int icon = R.drawable.icon; //
CharSequence tickerText = "Hello"; //
long when = System.currentTimeMillis(); // ,
// Nofification
Notification notification = new Notification(icon,tickerText,when);
RemoteViews contentView = new RemoteViews(getPackageName(),R.layout.view);
contentView.setImageViewResource(R.id.image, R.drawable.iconempty);
contentView.setTextViewText(R.id.text, "Hello,this is JC");
notification.contentView = contentView;
Intent notificationIntent = new Intent(this,Main.class);
PendingIntent contentIntent = PendingIntent.getActivity(this,0,notificationIntent,0);
notification.contentIntent = contentIntent;
// Notification NotificationManager
mNotificationManager.notify(0,notification);
Android関連の内容についてもっと興味がある読者は、当駅のテーマを調べてもいいです。「Android開発入門と上級教程」、「Androidデバッグ技術とよくある問題解決方法のまとめ」、「Androidマルチメディア操作技術まとめ(オーディオ、ビデオ、録音など)」、「Android基本コンポーネントの使い方のまとめ」、「AndroidビューViewテクニックのまとめ」、「Androidレイアウトlayout技巧まとめ」および「Androidコントロールの使い方のまとめ」ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。