libro
www.tuyano.com
Google androidプログラミング入門

AppWidgetを作ろう! (9/10)

作成:2009-12-28 18:26
更新:2010-05-11 15:19

■MyServiceサービスを作成する

では、サービス・クラスを作成しましょう。今回は「MyService」という名前で用意します。jp.tuyanoパッケージ内に「MyService.java」というファイルを用意し、ソースコードを以下に掲載するリストのように作成しましょう。

これでできあがりまです。プログラムをインストールしたら、ホームスクリーンをタップし続け(マウスボタンを押しっぱなし)ましょう。画面にリストが現れます。

ここから「Widgets」を選ぶと、現在インストールされているAppWidgetが一覧で表示されます。この中に、作成した「MyAppWidget」も表示されるはずです。これを選ぶと、AppWidgetがホームスクリーンに貼り付けられます。

ボタンをクリックしてみてください。String配列に用意したテキストからランダムに1つを選んで表示します。ま、ごくシンプルなものですが、基本的な仕組みはわかるでしょう。

※プログラムリストが表示されない場合

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]);
    }


}

※関連コンテンツ

「Google androidプログラミング入門」に戻る