ウィジェットの作り方 (5/5)

~ 30分ごとに文字を変更してみる ~

前へ   1  2  3  4  5   次へ
前回から、ちょっと改造をしています。今回は、実際に30分ごとに文字を変更して、完成です。

16.ウィジェットを30分ごとに更新する

ウィジェットの更新間隔は、ウィジェット設定ファイルで指定します。

widget01.xml

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
		xmlns:android="http://schemas.android.com/apk/res/android"
		android:minWidth="72dip"
		android:minHeight="72dip"
		android:updatePeriodMillis="1800000"
		android:initialLayout="@layout/main" />

単位はミリ秒です。また、180万ミリ秒以上、つまり30分未満を指定しても、30分になります。0は特別で、更新なし指定です。

16.テキストを更新ごとに変更する

これは、普通にやればOKです。でも、1つ注意点があります。今どの文字を表示しているか変数に覚えておきますが、この変数はstatic属性にします。ウィジェットは、更新ごとに新しくなっているようで、static変数でないと、前と今は別の変数ということになってしまいます。sampleWidget.javaは次のようになります。

sampleWidget.java

package sample.android.widget01;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;

public class SampleWidget01 extends AppWidgetProvider {
	static int n = 0;
	
	String[] text = {	"正常です",
				"温度が高くなっています",
				"[警告] 熱が暴走しています",
				"どっこいしょ",
				"復帰しました"	};
	
	@Override
	public void onUpdate(Context c, AppWidgetManager awm, int[] awi) {
		
		RemoteViews rv = new RemoteViews(c.getPackageName(), R.layout.main);
		rv.setTextViewText(R.id.textView, text[n]);
		n = (n+1)%5;
		
		ComponentName cn = new ComponentName(c, SampleWidget01.class);
		awm.updateAppWidget(cn, rv);
	}

}

実際に温度は測ってません。まあ、いたずらウィジェットです。

17.実行してみる

Androidウィジェット

自分で指定した文字が表示されました。右下のやつです。30分待ったら、変化するはずです。

Androidウィジェット

よし、変化しました。

18.終わりに

少しは応用できるウィジェットが完成しました。これでAndroidウィジェットの作り方は終わりです。最後にちょっと1つ、main.xmlで以下のようにすれば文字のサイズと色が変えられます。

~省略~

<TextView  
	android:id="@+id/textView"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:textSize="6sp"
	android:textColor="#ccffffff"
	android:text="@string/hello"
	/>
	
~省略~
前へ   1  2  3  4  5   次へ