作者:歐陽鵬
來源網址:http://blog.csdn.net/ouyang_peng
在修改顯示的信號強度之前,先了解一下什麼是dB,什麼是dBm?
1.dB
dB是一個表徵相對值的值,純粹的比值,只表示兩個量的相對大小關係,沒有單位,當考慮甲的功率相比於乙功率大或小多少個dB時,
按下面的計算公式:10log(甲功率/乙功率),如果採用兩者的電壓比計算,要用20log(甲電壓/乙電壓)。)
[例] 甲功率比乙功率大一倍,那麼10lg(甲功率/乙功率)=10lg2=3dB。也就是說,甲的功率比乙的功率大3 dB。
反之,如果甲的功率是乙的功率的一半,則甲的功率比乙的功率小3 dB。
2.dBm
dBm是一個表示功率絕對值的值(也可以認為是以1mW功率為基準的一個比值),計算公式為:10log(功率值/1mw)。
[例] 如果功率P為1mw,折算為dBm後為0dBm。
[例] 對於40W的功率,按dBm單位進行折算後的值應為:
10log(40W/1mw)=10log(40000)=10log4+10log10000=46dBm。
總之,dB是兩個量之間的比值,表示兩個量間的相對大小,而dBm則是表示功率絕對大小的值。在dB,dBm計算中,要注意基本概念,
用一個dBm減另外一個dBm時,得到的結果是dB,如:30dBm - 0dBm = 30dB。
3.手機信號強度表示
好了,那麼手機上顯示的數字的單位是那個呢,是dBm。當你仔細看的時候會發現這個值是負的,也就是說手機會顯示比如 -67(dBm),那就說明信號很強了.
這裡還說一個小知識:
中國移動的規範規定,手機接收電平>=(城市取-90dBm ;鄉村取 -94dBm )時,則滿足覆蓋要求,也就是說此處無線信號強度滿足覆蓋要求。
-67dBm 要比-90dBm 信號要強20多個dB ,那麼它在打電話接通成功率和通話過程中的話音質量都會好的多(當然也包括EDGE/GPRS上網的速度那些 )
所以,那個值越大信號就越好,因為那是個負值,而且在你手裡的時候它永遠是負值 ,如果你感興趣且附近有無線基站的天線的話,你也可以把你的手機儘量接近天線面板,那麼值就越來越大,如果手機跟天線面板挨到一起,那麼它可能十分接近於0了(0是達不到的,這裡的0的意思也不是說手機沒信號了。)
在信號強度計選擇工程模式,顯示了很多參數,你只要看BCCHLev(控制信道電平值)它就是手機的信號強度值,單位dBm,多大的信號你的手機可以正常接聽呢,BCCHLev-C1,C1也有顯示數值,如:BCCHLev(-63) ,C1(34),表示你的手機在信號大於-97dBm的狀況下是不會掉話的。
再來看手機發射功率要多大才合適呢,按GSM協議規定,手機發射功率是可以被基站控制的。基站通過下行SACCH信道,發出命令控制手機的發射功率級別,每個功率級別差2dB;
GSM900 手機最大發射功率級別是5(2W=2000mw,33dBm),最小發射功率級別是19(3mw,5dBm),
DCS1800手機最大發射功率級別是0(1W,30dBm),最小發射功率級別是15(1mW,0dBm)。
當手機遠離基站,或者處於無線陰影區時,基站可以命令手機發出較大功率,直至33dBm(GSM900),以克服遠距離傳輸或建築物遮擋所造成的信號損耗。
強度計裡的TXPower就是手機發射功率,你在撥打電話的狀態下可以看出你的手機發射功率,也就是數值越大越省電,輻射越小,數值在5,你的電話耗電大電池用不了一天,通話時別人經常聽不到你的聲音,你的手機經常會突然沒信號,會掉話,這樣你可以打投訴電話讓運營商來做信號覆蓋,讓你的手機信號好起來,減少輻射。
以上那麼多字,只有一個核心意思。不要被你手機信號還有多少格欺騙!!!那都是手機廠商自己定義的。咱要玩專業點的,直接看信號強度dBm。
Android系統查信號強度在設置—關於手機—網絡裡。
室內和室外的信號強度是有差距的。一般室外信號比室內好。
現在來看這個所謂的dBm,數值範圍在-XX~0之間。這個數越大,信號強度越高。
-50dBm~0dBm範圍內,恭喜你,你的信號已經好得很了。話說你就站在基站旁邊是吧,哈
-90dBm~-60dBm,同樣恭喜你,你基本不會面臨打不了電話的問題。如果打不了的,找運營商吧,那是他們的問題。
G室內,DS放桌上信號強度-67dBm,23asu。作打電話狀握手裡,-75dBm,19asu。調整各種姿勢,看到的最低是-83dBm,15asu。
這屬於什麼等級呢?簡單說就是,信號很不錯。室外沒看,但肯定比這個高,至於其他手機,可以自己上網去看,和DS的dBm值大多在一個檔次。個別帖子炫耀自己大於-50dBm的,都是因為他就在基站邊上。正常的範圍是-90dBm~-60dBm。
=============================
下面我們來看看手機沒有修改時候的顯示效果,關於手機-->狀態信息-->SIM卡狀態-->信號強度,就能看到手機的信號強度了。如下圖所示:
1、當信號大於等於-85dBm時候,信號顯示滿格
2、當信號大於等於-95dBm時候,而小於-85dBm時,信號顯示3格
3、當信號大於等於-105dBm時候,而小於-95dBm時,信號顯示2格,不好捕捉到。
4、當信號大於等於-115dBm時候,而小於-105dBm時,信號顯示1格,不好捕捉到。
5、當信號大於等於-140dBm時候,而小於-115dBm時,信號顯示0格,不好捕捉到。
上面幾個等級的相應劃分的原始碼在:rameworks/base/telephony/Java/android/telephony/SignalStrength.java中的getLteLevel()方法中,代碼1如下:
可以看到未修改前,劃分的幾個等級是:
1.大於-85時候,等級為SIGNAL_STRENGTH_GREAT,即為4
2.大於-95時候,等級為SIGNAL_STRENGTH_GOOD,即為3
3.大於-105時候,等級為SIGNAL_STRENGTH_MODERATE,即為2
4.大於-115時候,等級為SIGNAL_STRENGTH_POOR,即為1
5.大於-140時候,等級為SIGNAL_STRENGTH_NONE_OR_UNKNOWN,即為0
6.大於-44時候,等級為-1
修改後,將上面的幾個等級劃分改為:
1.大於-97時候,等級為SIGNAL_STRENGTH_GREAT,即為4
2.大於-105時候,等級為SIGNAL_STRENGTH_GOOD,即為3
3.大於-110時候,等級為SIGNAL_STRENGTH_MODERATE,即為2
4.大於-120時候,等級為SIGNAL_STRENGTH_POOR,即為1
5.大於-140時候,等級為SIGNAL_STRENGTH_NONE_OR_UNKNOWN,即為0
6.大於-44時候,等級為-1
由於上面的,加入了MTK的修復patch,代碼2如下:
上面代碼的意思是,先把這等級劃分的值從加入的插件中去獲取,如果獲取不到再執行我上面修改的,所以要去修改IServiceStateExt的mapLteSignalLevel(mLteRsrp, mLteRssnr, mLteSignalStrength)方法。當然如果沒有這個插件的話,可以直接把我上面的這段代碼2從代碼1中注釋即可。
由於IServiceStateExt是個接口,所以去修改它的具體實現類。通過查找原始碼,找到了實現類DefaultServiceStateExt。
該類目錄位於:vendor/mediatek/proprietary/frameworks/base/packages/FwkPlugin/src/com/mediatek/op/telephony/DefaultServiceStateExt.java
修改後代碼如下:
修改完代碼後,make systemimage後燒錄到MTK平臺手機即可。
=========================
修改後的效果圖如下所示:
1、當信號大於等於-97dBm時候,信號顯示滿格,而修改之前需要大於-85dBm。
2、當信號大於等於-105dBm時候,而小於-97dBm時,信號顯示少一個,而修改之前需要大於-95dBm。
3、當信號大於等於-110dBm時候,而小於-105dBm時,信號顯示2格,不好捕捉到。
4、當信號大於等於-120dBm時候,而小於-110dBm時,信號顯示1格,不好捕捉到。
5、當信號大於等於-140dBm時候,而小於-120dBm時,信號顯示0格,不好捕捉到。
=========================
當然,要修改電信、移動、聯通的3G、2G信號也可以在這個類中去修改。
網優僱傭軍投稿郵箱:wywd11@126.com
長按二維碼關注