[Android] AppWidget

| トラックバック(0) |

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>

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/135

Android Advent Calendar 2011

2012年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29