一年多的GT72可以升级显卡吗

1350人阅读
Android(17)
android手机信号强度检测
最近在面试的时候被问到一个问题,当手机处于弱网状态下,如何处理,如何监听网络信号强度变化。
这里先了解关于手机信号强度的相关几个概念
文章出处:
Android手机信号强度介绍
android定义了2种信号单位:dBm和asu。它们之间的关系是:dBm =-113+2asu,这是google给android手机定义的特有信号单位。例如,我的信号强度为-53dBm,则对应30asu,因为-53
= -113 + (230) 。
详细介绍两者:
asu:alone signal unit 独立信号单元,是一种模拟信号。ASU仅仅代表手机将它的位置传递给附近的信号塔的速率。它和dBm测量的是一样的东西,但是是以一种更加线性的方式来表示。
dBm:是一个表示功率绝对值的值(也可以认为是以1mW功率为基准的一个比值),计算公式为:10log(功率值/1mw)。
[例] 如果功率P为1mw,折算为dBm后为0dBm。
[例] 对于0.01mW的功率,按dBm单位进行折算后的值应为: 10log(0.01/1)=-20dBm。
这个数值越大,表明信号越好。由于手机信号强度一般较小,折算成为dBm一般都是负数。
中国移动的规范规定,手机接收电平&=(城市取-90dBm;乡村取-94dBm) 时,则满足覆盖要求,
也就是说此处无线信号强度满足覆盖要求.-67dBm要比-90dBm信号要强20多个dB,
那么它在打电话接通成功率和通话过程中的话音质量都会好的多。再引入一个相关概念dB。
dB:是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压 比计算,要用20log(甲电压/乙电压)。
[例] 甲功率比乙功率大一倍,那么10lg(甲功率/乙功率)=10lg2=3dB,即甲的功率比乙的功率大3 dB。反之,如果甲的功率是乙的功率的一半,则甲的功率比乙的功率小3 dB。
总结:dBm是负数,越接近0信号强度越高,信号越好,但不可能为0。asu为正数,值越大信号越好。dB是两个量之间的比值,表示两个量间的相对大小,而dBm则是表示功率绝对大小的值。
关于对数运算,不记得的自行复习一下了。
下面再来了解一下网络类型吧,还是很多的,不过在国内只要了解国内三大运营商的网络类型大概就可以了。
3G CDMA2000
4G TD-LTE,FDD-LTE
3G TD-SCDMA
4G TD-LTE,FDD-LTE
4G TD-LTE,FDD-LTE
而谷歌API给我们提供的有19种类型,在TelephonyManager类中定义,具体如下
/** Network type is unknown */
public static final int NETWORK_TYPE_UNKNOWN = 0;
/** Current network is GPRS */
public static final int NETWORK_TYPE_GPRS = 1;
/** Current network is EDGE */
public static final int NETWORK_TYPE_EDGE = 2;
/** Current network is UMTS */
public static final int NETWORK_TYPE_UMTS = 3;
/** Current network is CDMA: Either IS95A or IS95B*/
public static final int NETWORK_TYPE_CDMA = 4;
/** Current network is EVDO revision 0*/
public static final int NETWORK_TYPE_EVDO_0 = 5;
/** Current network is EVDO revision A*/
public static final int NETWORK_TYPE_EVDO_A = 6;
/** Current network is 1xRTT*/
public static final int NETWORK_TYPE_1xRTT = 7;
/** Current network is HSDPA */
public static final int NETWORK_TYPE_HSDPA = 8;
/** Current network is HSUPA */
public static final int NETWORK_TYPE_HSUPA = 9;
/** Current network is HSPA */
public static final int NETWORK_TYPE_HSPA = 10;
/** Current network is iDen */
public static final int NETWORK_TYPE_IDEN = 11;
/** Current network is EVDO revision B*/
public static final int NETWORK_TYPE_EVDO_B = 12;
/** Current network is LTE */
public static final int NETWORK_TYPE_LTE = 13;
/** Current network is eHRPD */
public static final int NETWORK_TYPE_EHRPD = 14;
/** Current network is HSPA+ */
public static final int NETWORK_TYPE_HSPAP = 15;
/** Current network is GSM {@hide} */
public static final int NETWORK_TYPE_GSM = 16;
/** Current network is TD_SCDMA {@hide} */
public static final int NETWORK_TYPE_TD_SCDMA = 17;
/** Current network is IWLAN {@hide} */
public static final int NETWORK_TYPE_IWLAN = 18;
下面通过一些实例来测试一下吧
首先记得加权限
&uses-permission android:name=&android.permission.INTERNET&/&
&uses-permission android:name=&android.permission.CHANGE_NETWORK_STATE&/&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE&/&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE&/&
原来的方式,只通过监听信号改变来区分网络类型
public class MainActivity extends AppCompatActivity {
private static final int NETWORKTYPE_WIFI = 0;
private static final int NETWORKTYPE_4G = 1;
private static final int NETWORKTYPE_2G = 2;
private static final int NETWORKTYPE_NONE = 3;
public TextView mTextV
public TelephonyManager mTelephonyM
public PhoneStatListener mL
* 网络信号强度监听
* @param savedInstanceState
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textview);
//获取telephonyManager
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//开始监听
mListener = new PhoneStatListener();
//监听信号强度
mTelephonyManager.listen(mListener, PhoneStatListener.LISTEN_SIGNAL_STRENGTHS);
protected void onResume() {
super.onResume();
mTelephonyManager.listen(mListener, PhoneStatListener.LISTEN_SIGNAL_STRENGTHS);
protected void onPause() {
super.onPause();
//用户不在当前页面时,停止监听
mTelephonyManager.listen(mListener, PhoneStatListener.LISTEN_NONE);
private class PhoneStatListener extends PhoneStateListener {
//获取信号强度
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
//获取网络信号强度
//获取0-4的5种信号级别,越大信号越好,但是api23开始才能用
int level = signalStrength.getLevel();
int gsmSignalStrength = signalStrength.getGsmSignalStrength();
//获取网络类型
int netWorkType = getNetWorkType(MainActivity.this);
switch (netWorkType) {
case NETWORKTYPE_WIFI:
mTextView.setText(&当前网络为wifi,信号强度为:& + gsmSignalStrength);
case NETWORKTYPE_2G:
mTextView.setText(&当前网络为2G移动网络,信号强度为:& + gsmSignalStrength);
case NETWORKTYPE_4G:
mTextView.setText(&当前网络为4G移动网络,信号强度为:& + gsmSignalStrength);
case NETWORKTYPE_NONE:
mTextView.setText(&当前没有网络,信号强度为:& + gsmSignalStrength);
mTextView.setText(&当前网络错误,信号强度为:& + gsmSignalStrength);
public static int getNetWorkType(Context context) {
int mNetWorkType = -1;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
String type = networkInfo.getTypeName();
if (type.equalsIgnoreCase(&WIFI&)) {
mNetWorkType = NETWORKTYPE_WIFI;
} else if (type.equalsIgnoreCase(&MOBILE&)) {
return isFastMobileNetwork(context) ? NETWORKTYPE_4G : NETWORKTYPE_2G;
mNetWorkType = NETWORKTYPE_NONE;//没有网络
return mNetWorkT
/**判断网络类型*/
private static boolean isFastMobileNetwork(Context context) {
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
//这里只简单区分两种类型网络,认为4G网络为快速,但最终还需要参考信号值
改进后的方式,wifi的信号通过wifimanager来监听,更精确,并且通过广播的方式更灵敏
package org.skxy.www.networksingstrange;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private static final int NETWORKTYPE_WIFI = 0;
private static final int NETWORKTYPE_4G = 1;
private static final int NETWORKTYPE_2G = 2;
private static final int NETWORKTYPE_NONE = 3;
public TextView mTextView;
public TelephonyManager mTelephonyManager;
public PhoneStatListener mListener;
public int mGsmSignalStrength;
private NetWorkBroadCastReciver mNetWorkBroadCastReciver;
* 网络信号强度监听
* @param savedInstanceState
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textview);
//获取telephonyManager
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//开始监听
mListener = new PhoneStatListener();
/**由于信号值变化不大时,监听反应不灵敏,所以通过广播的方式同时监听wifi和信号改变更灵敏*/
mNetWorkBroadCastReciver = new NetWorkBroadCastReciver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
registerReceiver(mNetWorkBroadCastReciver, intentFilter);
protected void onResume() {
super.onResume();
mTelephonyManager.listen(mListener, PhoneStatListener.LISTEN_SIGNAL_STRENGTHS);
protected void onPause() {
super.onPause();
//用户不在当前页面时,停止监听
mTelephonyManager.listen(mListener, PhoneStatListener.LISTEN_NONE);
private class PhoneStatListener extends PhoneStateListener {
//获取信号强度
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
//获取网络信号强度
//获取0-4的5种信号级别,越大信号越好,但是api23开始才能用
int level = signalStrength.getLevel();
mGsmSignalStrength = signalStrength.getGsmSignalStrength();
//网络信号改变时,获取网络信息
getNetWorkInfo();
/**暂时不用这个方法*/
public int getNetWorkType(Context context) {
int mNetWorkType = -1;
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
String type = networkInfo.getTypeName();
if (type.equalsIgnoreCase(&WIFI&)) {
mNetWorkType = NETWORKTYPE_WIFI;
} else if (type.equalsIgnoreCase(&MOBILE&)) {
return isFastMobileNetwork() ? NETWORKTYPE_4G : NETWORKTYPE_2G;
mNetWorkType = NETWORKTYPE_NONE;//没有网络
return mNetWorkType;
* 判断网络速度
private boolean isFastMobileNetwork() {
if (mTelephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE) {
//这里只简单区分两种类型网络,认为4G网络为快速,但最终还需要参考信号值
//接收网络状态改变的广播
class NetWorkBroadCastReciver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
getNetWorkInfo();
* 获取网络的信息
private void getNetWorkInfo() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
switch (info.getType()) {
case ConnectivityManager.TYPE_WIFI:
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo connectionInfo = manager.getConnectionInfo();
int rssi = connectionInfo.getRssi();
mTextView.setText(&当前为wifi网络,信号强度=& + rssi);
case ConnectivityManager.TYPE_MOBILE:
//移动网络,可以通过TelephonyManager来获取具体细化的网络类型
String netWorkStatus = isFastMobileNetwork() ? &4G网络& : &2G网络&;
mTextView.setText(&当前为& + netWorkStatus + &,信号强度=& + mGsmSignalStrength);
mTextView.setText(&没有可用网络&);
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mNetWorkBroadCastReciver);
关于信号获取流程,这个还需深入研究,目前只在应用层简单获取了网络信号。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10584次
排名:千里之外
原创:27篇
(2)(5)(4)(9)(9)LTE中RSRP与手机信号的四格是如何映射的? - 问通信专家
已解决问题
LTE中RSRP与手机信号的四格是如何映射的?
LTE中RSRP与手机信号的四格是如何映射的?
提问者: &提问时间: &
• LTE向多个站间目标小区切换失败
• 初级LTE sinr和RSRP、都好为什么下载速率很差是哪些问题影响的
• VOLTE测试时,RSRP在-67左右,sinr在33-38,为什么速率上不去,求解
• 在LTE中,测量报告里显示邻区RSRP为47,则邻区的实际RSRP值是多少dBm。()
• 今天测试LTE,基站没问题,RSRP和SINR都很好,下载正常,但是上传不合格,这是因为什么呢?
• LTE中基于A3的异频A2 RSRP触发门限,和异频A2 RSRP触发门限有何区别?基于A3的异频A2 RSRP触发门限是什么意思,应怎么理解?
• fdd_LTE网络覆盖中,RSRP良好,重叠覆盖也很低,模三干扰也低于5%,为什么平均SINR低于15么
• 为什么每次拉网测试 LTE上传 SINR质差比下载SINR质差严重得多 ?
RSRP基本一样
其他答案&(4)
这个问题,在2G时代就有人讨论过的,实际上没有明显的对应关系的,看终端的,每个厂家的终端会有不同的。
你可以大致对应一下的,目前LTE的RSRP一般要求-105dBm最低的,往上每格对应10dB试试看,这个是我猜测的,呵呵。最高的话,就是-65dBm
&&&&专家指数:793&&&&
1、这个其实信号不一定是4格啊,我的手机就是5格;
2、RSRP的强度和这个信号的格式是有关系的,信号越强,格数越多;
3、这个参数其实是各个厂家自己制定的,厂家也可以制定只有3格,也可以6格;
4、这个协议中其实是没有强制性的规定的。
希望能帮到楼主
&&&&专家指数:25235&&&&
厂家可以自己定,可多可少
&&&&专家指数:17&&&&
这个应该有一定的关系,但是跟手机生产厂家的终端有关系的。
&&&&专家指数:20796&&&&
• LTE向多个站间目标小区切换失败
• 初级LTE sinr和RSRP、都好为什么下载速率很差是哪些问题影响的
• VOLTE测试时,RSRP在-67左右,sinr在33-38,为什么速率上不去,求解
• 在LTE中,测量报告里显示邻区RSRP为47,则邻区的实际RSRP值是多少dBm。()
• 今天测试LTE,基站没问题,RSRP和SINR都很好,下载正常,但是上传不合格,这是因为什么呢?
• LTE中基于A3的异频A2 RSRP触发门限,和异频A2 RSRP触发门限有何区别?基于A3的异频A2 RSRP触发门限是什么意思,应怎么理解?
• fdd_LTE网络覆盖中,RSRP良好,重叠覆盖也很低,模三干扰也低于5%,为什么平均SINR低于15么
• 为什么每次拉网测试 LTE上传 SINR质差比下载SINR质差严重得多 ?
RSRP基本一样
相关资料下载
<font color="#24人关注
<font color="#64人关注
<font color="#25人关注
<font color="#20人关注
<font color="#39人关注
<font color="#12人关注
<font color="#53人关注
<font color="#25人关注
<font color="#093人关注
<font color="#14人关注
聘: 需求人数:2 人
地点:台州市,舟山市,湖州市,宁波市
聘: 需求人数:20 人
地点:深圳市
聘: 需求人数:20 人
地点:江苏省,安徽省,湖北省,浙江省,湖南省
聘: 需求人数:20 人
地点:贵阳市
聘: 需求人数:5 人
地点:宜春市,吉安市
聘: 需求人数:1 人
地点:重庆市
聘: 需求人数:10 人
地点:香港
聘: 需求人数:6 人
地点:青海省
聘: 需求人数:4 人
地点:安徽省,北京市
聘: 需求人数:16 人
地点:肇庆市
赞助商链接
Powered by信号电平值各是多少dbm - 问通信专家
已超时关闭问题
信号电平值各是多少dbm
提问者: &提问时间: &
其他答案&(4)
2G,3G,4G 正常通信的信号电平值分别-70~-90;-70~-100;-70~-110....&
&&&&专家指数:21573&&&&
回答时间: &&
2G,3G,4G 正常通信的信号电平值分别-30~-90;-30~-100;-45~-115.
&&&&专家指数:329&&&&
回答时间: &&
2G& 最强 -17左右& 最弱 -104此时脱网3G& 最弱-110左右 也脱网4G& 最弱 -112 还可以下载 -114差不多脱网
&&&&专家指数:7&&&&
回答时间: &&
&#8226; 电平值65dbm,语音质差5级,是什么原因
&#8226; 为什么室分信号电平值50 60dbm 但是全时隙掉话严重
&#8226; G网--MS占用主小区电平值在-84dbm左右,邻小区电平在-67dbm左右,就是不切换,当主小区电平值达到-90dbm左右时,才发生切换,怎么加以调整,理清切换关系?
&#8226; 爱立信2G设备手机电平低于-80dbm就打不出去电话了
&#8226; GSM路测时,电平值-70dbm左右,周围不存在同邻频干扰,但质差
&#8226; 在室内测得接收电平在-80dbm,但是出现质差是怎么回事,后台查询无干扰?
&#8226; 室分信号,电平-57dbm,通话质量持续6、7级,是室分故障吗?
相关资料下载
<font color="#7人关注
<font color="#8人关注
<font color="#29人关注
<font color="#74人关注
<font color="#289人关注
<font color="#1人关注
<font color="#79人关注
<font color="#496人关注
<font color="#16人关注
<font color="#54人关注
聘: 需求人数:2 人
地点:台州市,舟山市,湖州市,宁波市
聘: 需求人数:20 人
地点:深圳市
聘: 需求人数:20 人
地点:江苏省,安徽省,湖北省,浙江省,湖南省
聘: 需求人数:20 人
地点:贵阳市
聘: 需求人数:5 人
地点:宜春市,吉安市
聘: 需求人数:1 人
地点:重庆市
聘: 需求人数:10 人
地点:香港
聘: 需求人数:6 人
地点:青海省
聘: 需求人数:4 人
地点:安徽省,北京市
聘: 需求人数:16 人
地点:肇庆市
赞助商链接
Powered by如何获得在Android的LTE信号的强度?-安卓android,signal-strength-CodeGo.net
如何获得在Android的LTE信号的强度?
我是从HTC霹雳Verizon的新LTE手机。我无法找到该API来查询信号强度在听筒上的LTE技术。通过输入现场测试模式(##4636##),我可以看到信号强度为-98dBm 2 ASU。任何人都知道我的API来获得
本文地址 :CodeGo.net/281800/
-------------------------------------------------------------------------------------------------------------------------
1. 为了解决这个问题,我创建在Android Market上可自由查看的应用程序称为信号强度检测,并与在GitHub上的源代码(它也是非常重要的,我的应用程序,因为它被设计成一个pubs,结果上可以找到我们。博客,我将总结的结果:在较新的设备是有getLevel在方法SignalStrength返回从0-4的整数-4报告的信号强度 CodeGo.net,在其他LTE设备(我不相信HTC霹雳),有喜欢getLteCqigetLteRsrpgetLteRsrq和getLteRssnr我将离开你,以确定这些值是如何计算的信号强度。最后,我发现,在设备上(我相信HTC霹雳)的LTE信号的强度实际上是报告为GSM的!这是疯狂的,但却是事实。随意下载zip我们的博客上,看到与田野SignalStrength在广泛的设备。
作为一个方面说明,你需要思考,以再次访问,我将离开你,以确定如何最好的。这是相当简单的,但你需要做大量的try-catch,以确定是否存在,以及setAccessible(true)只是忽略任何问题
希望这会有所帮助!
您需要此代码。事实上,所有你需要的是在这里:
String ssignal = signalStrength.toString();
String[] parts = ssignal.split(" ");
该parts[]那么数组将包含这些
part[0] = "Signalstrength:" _ignore this, it's just the title_
parts[1] = GsmSignalStrength
parts[2] = GsmBitErrorRate
parts[3] = CdmaDbm
parts[4] = CdmaEcio
parts[5] = EvdoDbm
parts[6] = EvdoEcio
parts[7] = EvdoSnr
parts[8] = LteSignalStrength
parts[9] = LteRsrp
parts[10] = LteRsrq
parts[11] = LteRssnr
parts[12] = LteCqi
parts[13] = gsm|lte
parts[14] = _not reall sure what this number is_
所以,LTEdBm是:
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
int dbm = 0;
if ( tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE){
dbm = Integer.parseInt(parts[8])*2-113;
if (signalStrength.getGsmSignalStrength() != 99) {
int intdbm = -113 + 2
* signalStrength.getGsmSignalStrength();
dbm = Integer.toString(intdbm);
您需要注册LISTEN_SIGNAL_STRENGTHS一个PhoneStateListener。那么你会得到一个回调与当前信号强度,并与未来的更新回调。
本文标题 :如何获得在Android的LTE信号的强度?
本文地址 :CodeGo.net/281800/
Copyright (C) 2017 CodeGo.net

我要回帖

 

随机推荐