Androidの公式ブログ(Android Developers Blog)に、
「Introducing home screen widgets and the AppWidget framework」という記事がありました。
内容は、Android 1.5 SDKで導入されたAppWidgetフレームワークにより、
開発者がホームスクリーン上でウィジットとして応答できるようになったということで、
具体的なサンプルソースコード(抜粋)と、その解説が掲載されています。
※サンプルソースコード(フル)の入手先(SVN URL)については、「wiktionary-android - Google Code」に記載されています
また、AppWidgetについては、Android 1.5 SDK付属のApiDemosの下記ソースコードにもサンプルコードがあります。
%android-sdk-1.5_pre%\platforms\android-1.5\samples\ApiDemos\src\com\example\android\apis\appwidget\*.java
簡単に読んだ限りでは、以下の実装をすれば良さそうです。
※実際に試せてはないです...
1.AppWidgetProviderを継承したクラスを作成し、onUpdate()をオーバーライドして、フレームワークから呼び出されるウィジットの更新処理で、あなたのウィジットとして必要な処理を実装する。
このOnUpdate()では、時間のかかる処理をしてしまうと、Application Not Respoting(ANR)...応答なし、とみなされるので、そういう場合には、サービスで対応させる。
public class AppWidgetTest extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
Log.v("AppWidgetTest", "onUpdate");
}
}
2.AppWidgetの最少幅、最小高さ、更新間隔などを記載したappwidget-providerをxmlに追加する。
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="(セル(区画)の数*74)-2)dipを指定する"
android:minHeight="(セル(区画)の数*74)-2)dipを指定する"
android:updatePeriodMillis="更新間隔をミリ秒でいれる"
/>
3.アプリがAppWidgetとしてふるまうために、「android.appwidget.action.APPWIDGET_UPDATEに応答できるよ」ということを、AndroidManifest.xmlで宣言し、応答するAppWidgetProviderを継承したクラス(上記の1)、appwidget-providerのxml(上記の2)をメタデータとして関連づける。
<!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".AppWidgetProviderを継承したクラス名" android:label="ウィジット名文字列">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/appwidget-providerを記載したxmlファイル名(.xml拡張子は除く)" />
</receiver>
