下記ページを参考にAndroidのバッテリー残量表示ウィジェットを作成しました。 http://boco.hp3200.com/beginner/widget02-1.html これを、ウィジェットで表示している画像をクリックしたら、 一定時間画像を切り替えるというような仕様にしたいと思っています。 が、onClickやonTouchEventの利用の仕方や、 下記ソースのどこに追記していいかもわからない状態です。 ソースで何をしているのかが完全に理解できていないので、 当然といえば当然なのですが、、、。 画像をタップしたら一定時間画像を切り替えるには、 どの部分にどのようなプログラムを記述すれば良いのでしょうか。 -----------------------以下ソース---------------------------- package sample.android.battery.widget; import android.app.PendingIntent; import android.app.Service; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.widget.RemoteViews; public class SampleBatteryWidget extends AppWidgetProvider { protected static final String ACTION_MY_CLICK = null; protected static final String ACTION_WIDGET_TOUCH = null; @Override public void onEnabled(Context context) { super.onEnabled(context); Intent intent = new Intent(context, SampleBatteryWidget.class); context.startService(intent); } @Override public void onUpdate(Context c, AppWidgetManager awm, int[] awi) { Intent in = new Intent(c, WidgetService.class); c.startService(in); } public static class WidgetService extends Service { @Override public void onStart(Intent in, int si) { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(batteryReceiver, filter); } @Override public IBinder onBind(Intent in) { return null; } } private static BroadcastReceiver batteryReceiver = new BroadcastReceiver() { // 画像を準備 final int[] IMAGE = { R.drawable.thum01 , R.drawable.thum02 , R.drawable.thum03 , R.drawable.thum04 , R.drawable.thum05 , R.drawable.thum06 }; int scale = 100; int level = 0; @Override public void onReceive(Context c, Intent in) { String ac = in.getAction(); // バッテリーの%を取得 if (ac.equals(Intent.ACTION_BATTERY_CHANGED)) { level = in.getIntExtra("level", 0); scale = in.getIntExtra("scale", 0); } AppWidgetManager awm = AppWidgetManager.getInstance(c); ComponentName cn = new ComponentName(c, SampleBatteryWidget.class); RemoteViews rv = new RemoteViews(c.getPackageName(), R.layout.main); // %によって画像を変える rv.setImageViewResource(R.id.ImageView, IMAGE[(int) (level * 100 / scale) / 20]); // 文字の表示 rv.setTextViewText(R.id.textView, "" + (int) (level * 100 / scale) + "%"); awm.updateAppWidget(cn, rv); } }; }
↧