[Android]通知を表示する。その4。 | 妄想プログラマのらくがき帳

2013年5月27日月曜日

[Android]通知を表示する。その4。

通知ではプログレスバーを表示することもできます。

以下のサンプルコードでは、onClickBtnShowNotification()で通知を表示し、
onClickBtnUpdate()でプログレスバーを進め、onClickBtnFinish()でプログレスバーを終了しています。
public class MainActivity extends Activity {

    private final int notifyID = 100;
    private NotificationCompat.Builder m_builder;

    private int m_count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public void onClickBtnShowNotification(View view) {
        // 通知を表示する
        m_builder = new NotificationCompat.Builder(this);
        m_builder.setSmallIcon(R.drawable.ic_launcher);
        m_builder.setContentTitle("notification title");
        m_builder.setContentText("notification text.");
        m_builder.setTicker("notification ticker");

        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        manager.notify(notifyID, m_builder.build());
    }

    public void onClickBtnUpdate(View view) {
        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        // 第1引数に最大値、第2引数に現在値する。
        // 第3引数は値増加型プログレスバーの場合、falseを設定。
        m_builder.setProgress(100, m_count++, false);
        // マーキースタイルのプログレスバーにするには↓の引数でsetProgress()を呼び出す
        // m_builder.setProgress(0, 0, true);
        
        // 通知を更新する
        manager.notify(notifyID, m_builder.build());
    }

    public void onClickBtnFinish(View view) {
        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        // プログレスバーを終了させるには、以下の引数でsetProgress()を呼び出す
        m_builder.setProgress(0, 0, false);
        
        // 通知を更新する
        manager.notify(notifyID, m_builder.build());
    }
}
サンプルなのでボタンクリックでプログレスバーを進めていますが、
実際は別スレッドの処理内でsetProgress()を呼び出すことになると思います。

0 件のコメント:

コメントを投稿