Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

AndroidのApp Widgetでユーザー操作を処理する

ユーザーイベントに反応するインタラクティブ機能を備えたApp Widgetを作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/11/11 14:00

 Android携帯に搭載されるApp WidgetのAPIが、開発者向けに公開されました。App Widgetは、Androidユーザーにまったく新しい体験を提供します。この記事では、前回作成した基本的なApp Widgetに、ユーザー操作処理を追加する方法を紹介します。

目次

はじめに

 AndroidのApp Widgetインターフェースはとても強力です。これによって、開発者は、ホーム画面や同様のホスト機能を備えたアプリケーションでホスト可能な、単純なコントロールを作成できます。以前の記事「Androidのホーム画面用App Widgetを作成する原文)」では、基本的なApp Widgetの作成と設定を行う方法を説明しました。このApp Widgetは、ユーザーがあらかじめ設定した時間間隔でスライドショーを表示するものでした。では、ユーザーがこの時間間隔を変更したい場合や、スライドショーを停止したり、次の画像へすぐにスキップしたりしたい場合があるとしたら、どうすればよいでしょうか。この記事では、このようなアクションを処理するユーザーコントロールをApp Widgetに追加する方法について説明します。

 App Widgetでユーザー操作を処理するには、以下のタスクを実行する必要があります。

  1. App Widgetの各コントロールに固有のクリックハンドラを設定する
  2. 登録した受信先へクリックハンドラからコマンドを送信する
  3. 受信したコマンドを処理し、必要なアクションを実行する
  4. 変更を反映してApp Widgetを更新する

 この例では、前回の記事で作成したApp Widget(図1の上部のApp Widget)に手を加えて、コントロールが3つあるボタンバーを追加します(図1の下部の2つのApp Widget)。ボタンバーのボタンはそれぞれ固有のアクションを実行し、App Widget内の他の場所をクリックするとボタンバーは非表示になります。左端のボタン(ツールセット)をクリックすると、設定Activityが起動し、これによってユーザーはスライドショーの画像切り替えの時間間隔を変更できます。中央のボタンはスライドショーを停止または再開します。右端のボタンを使うと、ユーザーは次の画像へすぐにスキップできます。

図1 3種類の状態のApp Widget
図1 3種類の状態のApp Widget

RemoteViewsの処理

 App Widgetは、RemoteViewsという特殊な表示コントロールを使用します。通常のViewとは異なり、RemoteViewsコントロールは複数のViewコントロールを別プロセスで表示します。従って、ボタンハンドラを単純に追加するわけにはいきません。それでは、RemoteViewsオブジェクトを表示するプロセス(この場合はホーム画面プロセス)ではなく、アプリケーションプロセスでコードが実行されてしまいます。

 RemoteViewsコントロールでユーザー操作を処理できるようにするには、PendingIntentを登録し、RemoteViewsオブジェクト内の特定のViewがクリックされたときに、これが開始されるようにします。これは、RemoteViewsオブジェクトのsetOnClickPendingIntent()メソッドを呼び出すことで行います。例えば、スライドショーの時間間隔設定Activityを起動するPendingIntentを追加するには、次のようなコードを追加します。

  PendingIntent pendingIntent = PendingIntent.getActivity
     (context, 0, configIntent,
     PendingIntent.FLAG_UPDATE_CURRENT);
  remoteView.
     setOnClickPendingIntent(R.id.config, pendingIntent);

 続いて、次ページから、configIntentという内側のIntentを詳しく見ていきましょう。これはPendingIntentでラップされています。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Shane Conder(Shane Conder)

     モバイル技術やウェブ技術を得意とするソフトウェア開発者(現在は小さなモバイルソフトウェア会社に勤務)。先日、Androidプログラミングに関する詳しい解説書『Android Wireless Application Development』を、同じく開発者であるLauren Darceyと共同執筆...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5