电量控制插件

来源:互联网 发布:电脑为什么要优化系统 编辑:程序博客网 时间:2024/05/02 09:45

这个插件是属于设置的一部分,可以在

1packages\apps\Settings\res\drawable-hdpi

这个文件夹里面查看,呵呵,有没有看到上面目录的斜杠方向,懂吧。

这里找到一个文件名为:“ic_appwidget_settings_mobile_off” 的PNG文件。

而相关的文件是:

1vim packages/apps/Settings/src/com/android/settings/widget/SettingsAppWidgetProvider.java

代码要修改有几个部分,可以搜索“BUTTON_MOBILE”,进行修改。

1. 是否显示这个部件

01/**
02 * Provides control of power-related settings from a widget.
03 */
04public class SettingsAppWidgetProvider extends AppWidgetProvider {
05    static final String TAG = "SettingsAppWidgetProvider";
06 
07    static final ComponentName THIS_APPWIDGET =
08            new ComponentName("com.android.settings",
09                    "com.android.settings.widget.SettingsAppWidgetProvider");
10 
11    private static LocalBluetoothManager sLocalBluetoothManager = null;
12    private static TelephonyManager mTelephonyManager = null;
13 
14    private static final int BUTTON_WIFI = 0;
15    private static final int BUTTON_BRIGHTNESS = 1;
16    private static final int BUTTON_SYNC = 2;
17    private static final int BUTTON_GPS = 3;
18    private static final int BUTTON_BLUETOOTH = 4;
19//  private static final int BUTTON_MOBILE = 5; /* 该产品没有通话功能。 */

2. 点击之后的事件处理

01/**
02  * Receives and processes a button pressed intent or state change.
03  *
04  * @param context
05  * @param intent  Indicates the pressed button.
06  */
07 @Override
08 public void onReceive(Context context, Intent intent) {
09     super.onReceive(context, intent);
10     if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {
11         sWifiState.onActualStateChange(context, intent);
12     else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) {
13         sBluetoothState.onActualStateChange(context, intent);
14     else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) {
15         Uri data = intent.getData();
16         int buttonId = Integer.parseInt(data.getSchemeSpecificPart());
17         if (buttonId == BUTTON_WIFI) {
18             sWifiState.toggleState(context);
19         else if (buttonId == BUTTON_BRIGHTNESS) {
20             toggleBrightness(context);
21         else if (buttonId == BUTTON_SYNC) {
22             toggleSync(context);
23           else if (buttonId == BUTTON_GPS) {
24               toggleGps(context);
25         else if (buttonId == BUTTON_BLUETOOTH) {
26             sBluetoothState.toggleState(context);
27         }
28/* 删去相应的事件处理代码。
29   else if (buttonId == BUTTON_MOBILE) {
30             toggleMobile(context);
31         }*/
32               else if(TelephonyIntents.ACTION_MODEM_POWER_STATE_CHANGED.equals(intent.getAction())) {
33     else {
34         // Don't fall-through to updating the widget.  The Intent
35         // was something unrelated or that our super class took
36         // care of.
37         return;
38     }

3. 重新载入图片
01/**
02  * Load image for given widget and build {@link RemoteViews} for it.
03  */
04 static RemoteViews buildUpdate(Context context, int appWidgetId) {
05     RemoteViews views = new RemoteViews(context.getPackageName(),
06             R.layout.widget);
07     views.setOnClickPendingIntent(R.id.btn_wifi, getLaunchPendingIntent(context, appWidgetId,
08             BUTTON_WIFI));
09     views.setOnClickPendingIntent(R.id.btn_brightness,
10             getLaunchPendingIntent(context,
11                     appWidgetId, BUTTON_BRIGHTNESS));
12     views.setOnClickPendingIntent(R.id.btn_sync,
13             getLaunchPendingIntent(context,
14                     appWidgetId, BUTTON_SYNC));
15     views.setOnClickPendingIntent(R.id.btn_bluetooth,
16             getLaunchPendingIntent(context,
17                     appWidgetId, BUTTON_BLUETOOTH));
18 
19/*   views.setOnClickPendingIntent(R.id.btn_mobile,
20             getLaunchPendingIntent(context,
21                     appWidgetId, BUTTON_MOBILE)); */
22 
23     updateButtons(views, context);
24     return views;
25 }

  4. 还有这个,全注释掉吧。

01switch (getMobileState(context)) {
02    case STATE_DISABLED:
03        views.setImageViewResource(R.id.img_mobile, R.drawable.ic_appwidget_settings_mobile_off);
04        views.setImageViewResource(R.id.ind_mobile, R.drawable.appwidget_settings_ind_off_c);
05        break;
06    case STATE_ENABLED:
07        views.setImageViewResource(R.id.img_mobile, R.drawable.ic_appwidget_settings_mobile_on);
08        views.setImageViewResource(R.id.ind_mobile, R.drawable.appwidget_settings_ind_on_c);
09        break;
10    case STATE_INTERMEDIATE:
11        views.setImageViewResource(R.id.img_mobile, R.drawable.ic_appwidget_settings_mobile_off);
12        views.setImageViewResource(R.id.ind_mobile, R.drawable.appwidget_settings_ind_mid_c);
13        break;
14}