AppWidgetを作ろう! (9/10)
作成:2009-12-28 18:26
更新:2010-05-11 15:19
更新:2010-05-11 15:19
■MyServiceサービスを作成する
では、サービス・クラスを作成しましょう。今回は「MyService」という名前で用意します。jp.tuyanoパッケージ内に「MyService.java」というファイルを用意し、ソースコードを以下に掲載するリストのように作成しましょう。
これでできあがりまです。プログラムをインストールしたら、ホームスクリーンをタップし続け(マウスボタンを押しっぱなし)ましょう。画面にリストが現れます。
ここから「Widgets」を選ぶと、現在インストールされているAppWidgetが一覧で表示されます。この中に、作成した「MyAppWidget」も表示されるはずです。これを選ぶと、AppWidgetがホームスクリーンに貼り付けられます。
ボタンをクリックしてみてください。String配列に用意したテキストからランダムに1つを選んで表示します。ま、ごくシンプルなものですが、基本的な仕組みはわかるでしょう。
これでできあがりまです。プログラムをインストールしたら、ホームスクリーンをタップし続け(マウスボタンを押しっぱなし)ましょう。画面にリストが現れます。
ここから「Widgets」を選ぶと、現在インストールされているAppWidgetが一覧で表示されます。この中に、作成した「MyAppWidget」も表示されるはずです。これを選ぶと、AppWidgetがホームスクリーンに貼り付けられます。
ボタンをクリックしてみてください。String配列に用意したテキストからランダムに1つを選んで表示します。ま、ごくシンプルなものですが、基本的な仕組みはわかるでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package jp.tuyano;
import java.util.*;
import android.app.*;
import android.appwidget.AppWidgetManager;
import android.content.*;
import android.os.IBinder;
import android.widget.RemoteViews;
public class MyService extends Service {
private static final String ACTION_BTNCLICK =
"jp.tuyano.MyService.ACTION_BTNCLICK";
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
AppWidgetManager manager = AppWidgetManager.getInstance(this);
RemoteViews view = new RemoteViews(getPackageName(), R.layout.appwidget);
if (ACTION_BTNCLICK.equals(intent.getAction())) {
btnClicked(view);
}
Intent newintent = new Intent();
newintent.setAction(ACTION_BTNCLICK);
PendingIntent pending = PendingIntent.getService(this, 0, newintent, 0);
view.setOnClickPendingIntent(R.id.button1, pending);
ComponentName widget = new ComponentName(this, MyAppWidget.class);
manager.updateAppWidget(widget, view);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void btnClicked(RemoteViews view){
String[] msg = new String[]{"大吉。すべてよし!","中吉。いい一日。",
"小吉。小市民な一日。","吉。可もなく不可もなし。",
"凶。注意すべし。","大凶。南無阿弥陀仏。"};
int n = new Random(new Date().getTime()).nextInt(msg.length);
view.setTextViewText(R.id.text1, msg[n]);
}
}
※関連コンテンツ