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]); } }
※関連コンテンツ