根据getGsmSignalStrength()的相应dBm值,比例似乎是线性的.(请参阅此处的 dBm值).但我观察到,在几乎所有应用中,这个比例都没有用作线性比例.
例如,考虑Android的src StatusBarPolicy :: updateSignalStrength
signal strength = 0 or 99 -> no signal
signal strength >= 12 -> very good signal
signal strength >= 8 -> good signal
signal strength >= 5 -> poor signal
signal strength <5 -> very poor signal
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我找出我可以用百分比显示信号强度的比例.
我正在研究如何确定与Wi-Fi信号强度的距离,本文采用Wi-Fi和三边测量技术进行室内位置检测.
我该怎么做这个方法?在这种情况下,离线和在线阶段的含义是什么?
如何在ios 8.3中使用私有api获取cell id,因为之前的核心电话私有api在最新的ios sdk 8.3中不起作用.
我想检测手机的互联网连接速度是慢速还是高速。
现在他们已经弃用NetworkInfo并建议我们应该使用ConnectivityManager#getNetworkCapabilities 它我能够获得信号强度但无法弄清楚如何使用返回的整数值networkCapabilities.getSignalStrength()
它返回一个整数值,我得到这些值(-39、-71、-31)。我的问题是我们应该如何定义信号强度好/差。
这是我获取信号强度的代码:
ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
Network activeNetwork = cm.getActiveNetwork();
NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(activeNetwork);
int signalStrength = networkCapabilities.getSignalStrength();
Run Code Online (Sandbox Code Playgroud) 我试图通过点击按钮获得连接的蓝牙设备的当前RSSI值.但是它总是只返回-32768!不知道有什么不对!然而,当它第一次连接时,我能够获得正确的RSSI.
private Button.OnClickListener buttonRSSIOnClickListener = new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(BluetoothDevice.ACTION_FOUND);
short rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show();
}};
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?
我正在查看有关我计划制作的应用程序的SignalStrength类的文档,但是有很多我不太熟悉的电信术语.我想知道是否有人可以简要介绍一下本课程中的一些方法,特别是:
int getCdmaDbm()
Get the CDMA RSSI value in dBm
int getCdmaEcio()
Get the CDMA Ec/Io value in dB*10
int getEvdoDbm()
Get the EVDO RSSI value in dBm
int getEvdoEcio()
Get the EVDO Ec/Io value in dB*10
int getEvdoSnr()
Get the signal to noise ratio.
int getGsmBitErrorRate()
Get the GSM bit error rate (0-7, 99) as defined in TS 27.007 8.5
int getGsmSignalStrength()
Get the GSM Signal Strength, valid values are (0-31, 99) as defined in TS 27.007 8.5
Run Code Online (Sandbox Code Playgroud)
据我了解,GSM和CDMA是移动蜂窝网络的两种不同协议,EVDO是数据通过CDMA传输的标准,而HSPA是GSM上的等效数据标准.那么,为什么没有相应的HSPA方法,以及没有getCDMASignalStrength()或getCDMABitErrorRate()?我对RSSI或Ec/Io是什么也不太清楚.
android signals telecommunication signal-strength phone-state-listener
有没有人知道如何获得信号强度,而无需调用onSignalStrengthChanged.onSignalStrengthchanged的问题在于它在信号强度变化时被调用,我需要根据不同的标准获得signalstrength的值.
提前致谢.
嘿我为GSM和CDMA设备试过了signalStrength.getGsmSignalStrength(),但是我注意到即使sim没有插入设备,这两个设备也能提供强大的功能.我想只在网络好的时候拨打电话或发送信息我怎样才能实现这个?并且还想知道这个API返回的信号强度!! ...请尽快回复.
public class AndroidPhoneStateListener extends PhoneStateListener {
public static int signalStrengthValue;
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
if (signalStrength.isGsm()) {
if (signalStrength.getGsmSignalStrength() != 99)
signalStrengthValue = signalStrength.getGsmSignalStrength() * 2 - 113;
else
signalStrengthValue = signalStrength.getGsmSignalStrength();
} else {
signalStrengthValue = signalStrength.getCdmaDbm();
}
}
}
Run Code Online (Sandbox Code Playgroud)