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

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

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

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

而相关的文件是:

1 vim 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  */
04 public 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. 还有这个,全注释掉吧。

01 switch (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 }

android 电量控制相关推荐

  1. Android实现电量控制降低耗电

    Android实现电量控制降低耗电? 如何才能降低Android应用程序的耗电量呢? 如何有效地控制耗电量问题? 这一个接一个的问题,都和电池的电量有关,下面我们进行详细的有关分析: Android手 ...

  2. 【Android 电量优化】JobScheduler 源码分析 ( JobServiceContext 源码分析 | 闭环操作总结 | 用户提交任务 | 广播接收者接受相关广播触发任务执行 )★

    文章目录 一.JobServiceContext 引入 二.JobServiceContext 源码分析 三.用户在应用层如何使用 JobScheduler 四.用户提交任务 五.广播接收者监听广播触 ...

  3. 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | 任务检查 | 任务执行 )

    文章目录 一.回调 StateChangedListener 接口 二.JobHandler 处理 ( 任务检查 ) 三.maybeRunPendingJobsH 方法 四.assignJobsToC ...

  4. 【Android 电量优化】JobScheduler 相关源码分析 ( ConnectivityController 底层源码分析 | 构造函数 | 追踪任务更新 | 注册接收者监听连接变化 )

    文章目录 一.ConnectivityController 连接控制器引入 二.ConnectivityController 构造方法解析 ( 注册接收者 ) 三.mConnectivityRecei ...

  5. 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | Android 源码在线网址推荐 )

    文章目录 一.JobScheduler 提交任务 schedule 方法源码分析 二.schedule(JobInfo job, int uId) 方法 三.scheduleAsPackage 方法 ...

  6. 【Android 电量优化】电量优化 ( 使用 AlarmManager 保持 CPU 唤醒 )

    文章目录 一.AlarmManager 简介 二.使用 AlarmManager 保持 CPU 唤醒流程 ( 省电操作 ) 三.使用 WeakLock 保持 CPU 唤醒 代码示例 1.Service ...

  7. 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )

    文章目录 一.Battery Historian 环境要求 二.上传电量报告 三.Battery Historian 电量分析报告 四.电量优化三原则 五.电量优化注意事项 参考 Google 官方文 ...

  8. 【Android 电量优化】电量优化 ( 获取电量分析报告 | 阿里云服务器搭建 Battery Historian | 上传并生成分析报告 )

    文章目录 一.Battery Historian 搭建环境 二.获取 Android 手机电量报告 1.重置电量状态 2.开启获取 WeakLock 信息 3.获取手机电量报告 三.阿里云服务器搭建 ...

  9. android保存播放进度,Android MediaPlayer控制进度播放音频

    Android MediaPlayer控制进度播放音频 本文简单介绍MediaPlayer获取播放进度和设置进度播放. 1.获取音频文件的播放时间总长度 //返回的是int的毫秒级数据 /** * G ...

最新文章

  1. async spring 默认线程池_Spring boot注解@Async线程池实例详解
  2. shell 脚本 自动化
  3. 香肠派对电脑版_香肠派对2020先行服最新内测版(众神降临)-香肠派对2020先行服游戏下载v9.82...
  4. python多线程实现方法_Python3 多线程的两种实现方式
  5. [Javascript]基于ExplorerCanvas绘制表盘时钟
  6. 如何卸载删除sql2005
  7. mac下加速下载百度云资源
  8. 新闻发布系统(java实现)+论文
  9. nova虚拟机迁移一
  10. 运放输入偏置电流方向_运放-输入偏置电流与输入失调电流
  11. Xilinx 文件的编写
  12. 定位到excel最后一个非空单元格操作技巧,你一定要知道!(二)
  13. (C++)整型数组A[n]中的元素调整为左右两部分,其中左边所有元素为奇数,右边所有元素为偶数。时间复杂度为O(n)。
  14. 常见的数值积分方法 (欧拉、中值、龙格-库塔,【常用于IMU中】)
  15. 中国千家主要规划设计勘察单位
  16. 机器学习算法面经(阿里京东拼多多百度等)
  17. 常见的物联通讯协议(一)
  18. Mysql安装(转自韩顺平教育)
  19. 六-体系结构 Architecture
  20. 哈佛啥时候已经成功制造了60只人工蜜蜂?2013年么?《黑镜》第三季第六集,细思极恐

热门文章

  1. 冻结训练的理解与使用
  2. APM32 ST-LINK不能刷入
  3. Android 上能提高学习工作效率的应用
  4. 有道翻译爬虫+JS逆向
  5. Caused by: java.io.IOException: APR error: -730053
  6. 企业如何远程招聘到靠谱的程序员?--Codassium网页视频聊天工具
  7. 复合效应 达伦哈迪_哈迪·哈里里(Hadi Hariri):“我们需要研究新事物”
  8. 统计给定的n个数中,负数、零和正数的个数。
  9. mysql没有及时启动1053_mysql 启动 错误1053:服务没有及时响应启动或者控制请求
  10. 反恐精英java_使用java查询反恐精英1.6服务器信息