Androidのホーム画面に常駐するアプリを作るにはAndroidで動く携帯Javaアプリ作成入門(10)(1/3 ページ)

本連載で、SDKとEclipseを使ってAndroidの携帯端末で動くJavaアプリを作成し、Android Marketでの配布を目指しましょう

» 2009年09月28日 00時00分 公開
[緒方聡株式会社イーフロー]

Androidのホーム画面に常駐する「AppWidget」とは

 9月15日、Android SDK 1.6がリリースされたばかりですが、実は4月にリリースされたAndroid SDK 1.5から、「AppWidget」というホームスクリーンに常駐するアプリを作れるようになっていたのをご存じでしょうか。

 皆さんが、よく見慣れているGoogle検索やアナログ時計のようなものが作れるようになったのです。

図1 Serviceの状態遷移 図1 プリインストールされているウィジェットたち

GUIコンポーネントの「ウィジェット」とホームスクリーンに常駐する「ウィジェット」

 連載第4回「簡単でワクワクするAndroidウィジェット10連発!」で紹介したGUIコンポーネントも、パッケージが「widget」なので「ウィジェット」と呼びました。今回解説するAppWidgetもメニューが「ウィジェット」と表示されているため、エンドユーザー的には「ウィジェット」です。

 図2のメニューは、ホームスクリーンを長押しすることで出てきます。メニューの「ウィジェット」を選択すると、インストール済みのウィジェットが一覧表示されます。

図2 「ホーム画面に追加」メニュー 図2 「ホーム画面に追加」メニュー

 混乱を避けるために、今回は単に「ウィジェット」といえばAppWidgetのことを指しているということにします。連載第4回で紹介した「android.widget」パッケージは、「GUIコンポーネント」といういい回しを用います。

一般的な「ウィジェット」とAndroidの「ウィジェット」

 Windows Vistaから標準搭載されている「Windowsサイドバー」には「ガジェット」というものが配置でき、取り出して任意の位置に配置も可能です。

 そのほかに「Yahoo!ウィジェット」「Operaウィジェット」「Googleデスクトップガジェット」などがいわゆるPC用のウィジェット/ガジェットです。

 これらは、すべてHTMLCSSJavaScriptを用いて作成されます。WindowsサイドバーのガジェットはJavaScript以外のスクリプトでも開発可能ですが、基本はJScript(JavaScript)です。PCのウィジェットといえば、HTML、CSS、JavaScriptが使用されるのが一般的です。これら一般的なウィジェット/ガジェットについての詳細は下記記事を参照してください。

 Androidのウィジェットの場合は、どうでしょうか。幸か不幸か、AndroidのウィジェットはHTML/CSS/JavaScriptではなくJavaだけで開発します。Javaの開発に慣れている皆さんにとっては朗報ですね。

Androidのウィジェットで、できること/できないこと

 Androidのウィジェットでできること、できないことをまず知っておくのは、とてもよいことです。というのも、Androidのウィジェットには、結構制限があり、やりたいことが実現できない可能性があるためです。

 できること、できないことを、Activityと比較してみます。まず、できることは以下になります。

  • ホームスクリーンに常駐できる
  • 同一ウィジェットを複数起動できる
  • 起動中にフルスクリーンを使用しない

 そして、できないことは以下になります。

  • きめ細かいイベントディスパッチ
  • きめ細かいレイアウト

 Activityに比べると、イベント周りの処理がとても弱いです。例えば、「表示されたときに何か処理をしたい」「隠れたときに何か処理をしたい」ということができません。イベント処理が可能なのはクリックのみです。

使用できるレイアウトやGUIコンポーネントにも制限

 また、使用可能なレイアウトやGUIコンポーネントにも制限があります。以下がサポートするレイアウトとGUIコンポーネントで、とても少ないです。

  • レイアウト
    • FrameLayout
    • Linearlayout
    • RelativeLayout
  • GUIコンポーネント
    • AnalogClock
    • Button
    • Chronometer
    • ImageButton
    • ImageView
    • ProgressBar
    • TextView

 また、上記のサブクラスはサポートされません。

ウィジェットの処理方法の制限

 このような制限事項のほかに、プログラムの処理方法にも制限があります。ウィジェットのプログラム処理の方法は以下のように使い分けができます。

処理方法 説明
指定した間隔ごとに実行 設定ファイルにミリ秒単位で更新期間を指定することで、その周期で処理を実行
指定した時間に実行 設定ファイルの更新期間は利用せずに、AlarmManagerを使用して独自に処理を実行
クリック時に実行 対象のGUIコンポーネントがクリックされたタイミングで処理を実行
表1 ウィジェットのプログラム処理の方法

 特に「指定した間隔ごとに実行」は、標準的な方法で実装はとても簡単ですが、ウィジェットは常駐し、バックグラウンドでも動作するという性質があるため、短い間隔を指定すると、ほかのアプリの実行に影響を与えたり、バッテリーの消耗を加速させたりという副作用があるため、使いどころに十分気を付けなければなりません。

 それでは、それぞれの実行方法を、サンプルを使用しながら見ていくことにしましょう。

Android SDKのコマンドラインツールの使い方

 AndroidウィジェットはAndroidアプリのように、EclipseのADT(Android Development Tools Plugin for the Eclipse IDE)から直接エミュレータにインストールできません。そこでAndroidウィジェットは、Android SDKのコマンドラインツールを用いてインストールします。

 まずはエミュレータの起動方法やアプリ/ウィジェットのインストール方法、アンインストール方法を見ていきましょう。Windowsならコマンドプロンプト、LinuxやMac OS Xならコマンドプロンプト相当のものを開いて、Android SDKをインストールしたフォルダの「tools」フォルダにパスを通してください。

起動方法

 最も簡単な起動方法は以下のとおりです。

emulator -avd <name>

 <name>にはいつも使用しているAVD(Android Virtual Device、エミュレータ上でAndroid 1.5を動作させるための仮想デバイス)の名前を指定します。または、以下でも可能です。

emulator @<name>

 AVDについての詳細は、以下のページの下部を参考にしてください。

 ログの確認を行うためのDDMS(Dalvik Debug Monitor Service)も、以下のコマンドで起動するとよいでしょう。

ddms

インストール

 インストールは.apkパッケージが事前に出来上がってなければなりませんが、Eclipseを用いて開発を行っているなら、自動的にできているので問題ありません。以下のようにインストールします。

adb install <filename>

 <filename>には.apkを指定します。すでに同一パッケージがインストールされているとインストールに失敗します。

アンインストール

 アンインストールは以下のように行います。

adb uninstall <package>

 <package>はファイル名ではなく、AndroidManifest.xmlで指定しているJavaのパッケージ名を指定します。「com.example.android.appwidget」というパッケージを指定している場合、以下のようにアンインストールします。

adb uninstall com.example.android.appwidget

 取りあえず、これだけ覚えれば開発を始められます。

 次ページではAppWidgeのライフサイクルや作成するための基礎知識を解説します。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。