なお、今回のサンプルプログラムはAPI Level 14 (Android 4.0)以降を対象としています。
NotificationTest7aActivity.java
package jp.co.triware.samples.NotificationTest7a; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class NotificationTest7aActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final NotificationManager notifMgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); final Notification.Builder notifBuilder = new Notification.Builder(this); // API Level 11 final EditText etTickerText = (EditText)findViewById(R.id.tickerText_et); final EditText etContentText = (EditText)findViewById(R.id.contentText_et); Button btnNotify = (Button)findViewById(R.id.notify_btn); btnNotify.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { // ステータスバーと通知エリアに表示する内容を取得 int icon = R.drawable.ic_launcher; // アイコン String tickerText = etTickerText.getText().toString(); // テキスト(ステータスバー) long when = System.currentTimeMillis(); // 時刻 String contentTitle = getString(R.string.app_name); // タイトル String contentText = etContentText.getText().toString(); // 完了時の通知メッセージ // 取得した値をセット notifBuilder.setSmallIcon(icon); notifBuilder.setTicker(tickerText); notifBuilder.setWhen(when); notifBuilder.setContentTitle(contentTitle); notifBuilder.setContentText(contentText); // プログレスバー表示用のスレッド new Thread(new Runnable() { @Override public void run() { // バーの表示 for (int i = 0; i <= 100; i ++) { notifBuilder.setProgress(100, i, false); // API Level 14 notifMgr.notify(R.string.app_name, notifBuilder.getNotification()); try { Thread.sleep(100); } catch (InterruptedException e) { ; } } // 完了時の通知 notifBuilder.setProgress(0, 0, false); // API Level 14 notifMgr.notify(R.string.app_name, notifBuilder.getNotification()); } }).start(); } }); } }
19行目のNotification.BuilderはAndroid 3.0 (API Level 11)で追加されました。また、46行目と55行目のsetProgress()メソッドはAndroid 4.0 (API Level 14)で追加されました。これらを使うために、今回はAndroid 4.0以降を対象としています。
46行目のsetProgress()で、0~100%のプログレスバーを表示します。処理が終わったら、55行目でプログレスバーを消します。
main.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" android:orientation="vertical" > <EditText android:id="@+id/tickerText_et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Ticker Text" /> <EditText android:id="@+id/contentText_et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Content Text" /> <Button android:id="@+id/notify_btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Notify" /> </LinearLayout>
Androidプロジェクトの設定
ビルドターゲットや最小SDKバージョンは、『Android 4.0 (API Level 14)以降』を指定してください。
プロジェクト名: NotificationTest7a アプリケーション名: NotificationTest7a パッケージ名: jp.co.triware.samples.NotificationTest7a アクティビティーの作成: NotificationTest7aActivity
実行結果
いつものようにテキストを入力してNotifyボタンをクリックします。
ステータスバーにアイコンが表示されたので、、、
通知エリアを開くと、プログレスバーが表示されて、バーが進んでいます。
処理が終わるとプログレスバーが消えました。
今回はAndroid 4.0用のサンプルでしたが、実はそれ以前のバージョンでも実現できます。これについてはまた別の機会にご紹介する予定です。
0 件のコメント:
コメントを投稿