0

私はAndroidが初めてで、少し問題があります。すでに複数のフォーラムを検索しましたが、何も検索していません..

バッテリーを表示するシンプルなウィジェットがあり、クリックするとポップアップテーマでアクティビティが開きます。

だから私はこれもファイルを持っていますが、何か方法が間違っているのでしょうか?

ウィジェットプロバイダー:

public class Widget extends AppWidgetProvider {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        super.onReceive(context, intent);
        context.startService(new Intent(context, Service.class));
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        // TODO Auto-generated method stub
        ComponentName thisWidget = new ComponentName(context,
                Widget.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);

        int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
        for (int widgetId : allWidgetIds) {

            RemoteViews updateViews = new RemoteViews(context.getPackageName(),
                    R.layout.widget_layout);

            Intent intent = new Intent(context, Popup.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                    intent, 0);
            updateViews.setOnClickPendingIntent(R.id.widget_layout,
                    pendingIntent);

            manager.updateAppWidget(widgetId, updateViews);

        }
    }

    @Override
    public void onDisabled(Context context) {
        // TODO Auto-generated method stub
        context.stopService(new Intent(context, Service.class));
        super.onDisabled(context);
    }
}

そして私のサービスで:

public class Service extends Service {

    private int batteryLevel = 0;
    RemoteViews updateViews;

    private BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
                batteryLevel = intent.getIntExtra("level", 0);
                updateViews = new RemoteViews(context.getPackageName(),
                        R.layout.widget_layout);

                updateViews.setImageViewBitmap(R.id.imgBattery,
                buildBitmap(batteryLevel + "%", context));

                ComponentName thisWidget = new ComponentName(context,
                        Widget.class);
                AppWidgetManager manager = AppWidgetManager
                        .getInstance(context);
                manager.updateAppWidget(thisWidget, updateViews);
            }
        }
    };

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(receiver, intentFilter);
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        unregisterReceiver(Receiver);
        super.onDestroy();
    }
}

誰か助けてくれませんか?それに加えて、サービスには30MBがあります...実行中

4

1 に答える 1

2

これを簡単にしましょう:

private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
            batteryLevel = intent.getIntExtra("level", 0);
            updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

            updateViews.setImageViewBitmap(R.id.imgBattery, buildBitmap(batteryLevel + "%", context));

            Intent intent = new Intent(context, Popup.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
            updateViews.setOnClickPendingIntent(R.id.widget_layout, pendingIntent);

            ComponentName thisWidget = new ComponentName(context, Widget.class);
            AppWidgetManager manager = AppWidgetManager.getInstance(context);
            manager.updateAppWidget(thisWidget, updateViews);
        }
    }
};
于 2013-04-30T19:13:10.523 に答える