微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 关于android手机mtk平台 信号格数的修改(转)

关于android手机mtk平台 信号格数的修改(转)

时间:10-02 整理:3721RD 点击:
   最近的一个新需求,需要把android原生的四个信号条改为五格信号条,一下是本人的解决方案:(注;这里主要是针对GSM网络)
       android 2.3:
                        a.  Modem底层上报信号参数RSSI给modem L4
                        b.  在modem L4中,经过计算的到上报给上层的asu值,asu的范围是0-31,计算公式为:
                        asu = (-113 + RSSI) / 2
                        c.  在SatusBarPolicy.java中的updateSignalStrength(int SIMId)方法中(单卡情况为updateSignalStrength()),将asu值转化为信号格数,将asu的取值范围对应相应iconlevel就ok了
               2.3就不做详细描述了 ,具体修改参考android 4. 0
      android 4.0:
                      a:首先 php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/base/telephony/java/android/telephony/SignalStrength.java
                      public int getGsmLevel() {
                                                          int level;
                                                         // ASU ranges fROM 0 to 31 - TS 27.007 Sec 8.5
                                                         // asu = 0 (-113dB or less) is very weak
                                                        // signal, its better to show 0 bars to the user in such cases.
                                                       // asu = 99 is a special case, where the signal strength is unknown.
                                                       int asu = getGSMSignalStrength();
        
      
                                                        try{
                                                              level = mServiceStateExt.mapGsmSignalLevel(asu);//主要的函数在这里
                                                            } catch (Exception e){
                                                               if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
                                                              else if (asu >= 16) level = SIGNAL_STRENGTH_HIGHEST;  //具体的转换关系 asu=(-113+assi)/2
                                                              else if (asu >= 12) level = SIGNAL_STRENGTH_GREAT;
                                                              else if (asu >= 8)  level = SIGNAL_STRENGTH_GOOD;
                                                               else if (asu >= 5)  level = SIGNAL_STRENGTH_MODERATE;
                                                               else level = SIGNAL_STRENGTH_POOR;
                                                            }
        
        
                                                      return level;
                                                   }
                      b:mServiceStateExt 的具体实例在 mediatek/frameworks/base/op/java/com/mediatek/op/telephony/ServiceStateExt.java
                                                   修改: mapGsmSignalLevel(int asu){...}
                     c:上层的修改主要在SystemUI模块
                                  主要文件有:networkcontroller.java  networkcontrollergemini.Java 这里只需修改 判断条件就ok了 主要的原始的为if(iconlevel<5)-->if(iconlevel<6)
                                                       telephonyicons.java   telephonyiconsgemini.java   大家只需打开文件  就明白要修改哪了(主要修改资源文件id数组,由原来的length为五  改为6)
                      到此 就完成了~   

呵,这个顶一下吧

必须顶

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top