Android4.1 如何实现状态栏上信号图标有SIM卡1,2标记,并且当处于2G状态显示“G”,处于3G状态显示“3G”

来源:互联网 发布:淘宝海之蓝卖60真的吗 编辑:程序博客网 时间:2024/05/22 00:46
[Android Version]
6577/6589 Android V4.1
[Description]
如何实现状态栏上信号图标有SIM卡1,2标记,并且当处于2G状态显示“G”,处于3G状态显示“3G”,类似联通定义的feature
 
[Solution]
请按照下面的步骤实验:
1. \mediatek\operator\OP02\packages\apps\Plugins\res\drawable-hdpi, 将这下面的图片资源添加到默认的systemUI路径frameworks\base\packages\SystemUI\res\drawable-hdpi,其中fm与sms相关的7个图标可以不添加
2. 为了build到上面的资源,请在frameworks\base\packages\SystemUI\res\layout\status_bar.xml 随便加个换行,目的是可以执行build 到res资源
3. frameworks\base\packages\SystemUI\Android.mk文件将com.mediatek.systemui.ext注释掉,如下:
LOCAL_STATIC_JAVA_LIBRARIES := android-common-carousel 
#com.mediatek.systemui.ext
4. 将mediatek\operator\OP02\packages\apps\Plugins\src\com\mediatek\systemui\plugin\TelephonyIcons.java 文件复制到 frameworks\base\packages\ext\src\com\mediatek\systemui\ext 目录下,并修改TelephonyIcons.java文件的包名,增加import的resource文件
package com.mediatek.systemui.ext;
 import com.android.systemui.R;
5. 修改frameworks\base\packages\SystemUI\src\com\mediatek\systemui\ext\DefaultStatusBarPlugin.java文件,主要是修改为mediatek\operator\OP02\packages\apps\Plugins\src\com\mediatek\systemui\plugin\Op02StatusBarPlugin.java的样子,具体如下:
(1) 增加
import com.mediatek.systemui.ext.DataType;
import com.mediatek.systemui.ext.NetworkType;
import com.android.systemui.R;
(2)    public Resources getPluginResources() {
 return this.getResources();       
               //return null;
    }
(3)    public int getSignalStrengthNullIconGemini(int slotId) {
  if (slotId == 0) {
            return R.drawable.stat_sys_gemini_signal_null_sim1;  //显示无信号图标
        } else if (slotId == 1) {
            return R.drawable.stat_sys_gemini_signal_null_sim2; //显示无信号图标
        } 
        return -1;
    }
(4)    public int getSignalIndicatorIconGemini(int slotId) {
        if (slotId == 0) {
            return R.drawable.stat_sys_gemini_signal_indicator_sim1;
        } else if (slotId == 1) {
            return R.drawable.stat_sys_gemini_signal_indicator_sim2;
        }       
 return -1; 
    }
(5)    public int[] getDataTypeIconListGemini(boolean roaming, DataType dataType) {
  int[] iconList = null;
        if (roaming) {
            iconList = TelephonyIcons.DATA_ROAM[dataType.getTypeId()];
        }
        return iconList;       
  
        //return null;     
 }
(6)    public int getDataNetworkTypeIconGemini(NetworkType networkType, int simColorId) {
  int typeId = networkType.getTypeId();
        if (typeId >= 0 && typeId <= 1) {
            return TelephonyIcons.NETWORK_TYPE[typeId][simColorId];
        } 
  return -1;
    }
(7)    public String get3gDisabledWarningString() {
        return getString(R.string.gemini_3g_disable_warning);
        //return null; 
    }
6. frameworks\base\packages\SystemUI\ext\Android.mk 删除这个mk文件
7. frameworks\base\packages\\SystemUI\ext\src\com目录下mediatek的folder 复制到\frameworks\base\packages\SystemUI\src\com路径下,与android部分并列
8. frameworks\base\packages\SystemUI\ext\ 将ext的目录删除



单卡项目如何实现状态栏上信号图标左边在网络处于2G状态显示“G”,处于3G状态显示“3G”图标
单卡的项目目前没有显示G图标的layout,如果要做此feature需要参考双卡文件对应的修改:

完成feature的步骤:
(1)添加view id
(2)对view id进行初始化
(3)之后就是在网络状态变化时显示不同的图标,也就是控制图标的更新
 
完成feature的方法:
1. layout gemini_signal_cluster_view.xml 有个view是network_type,请在单卡文件signal_cluster_view.xml也对应的增加这个view
2. 搜索这个view id “network_typenetwork_type”被使用的地方等,将signalclusterviewgemini与networkcontrollergemini文件对应的修改merge到signalclusterview与networkcontroller。

0 0
原创粉丝点击