如何使用android SDK计算我的wifi和3g的信号强度?

时间:2015-04-18 00:47:23

标签: android-studio wifi 3g

我尝试制作一个应用程序来计算我的wifi或3g的信号强度,让用户知道他与该接入点的距离。 例如,我在这里有一个代码示例,它将计算设备和wifi接入点之间的距离(以千米为单位):

public double calculateDistance(double signalLevelInDb, double freqInMHz)
{
    double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb)) / 20.0;
    return Math.pow(10.0, exp);
}

但是,当我在android studio中调用该函数时,我不知道如何计算 signalLevelInDb (= dbm)和 freqInMhz (= mHz)所以我可以将它们发送到函数来显示我的距离。我如何让android studio给我这两个值?我可以为3g使用相同的功能吗?

1 个答案:

答案 0 :(得分:1)

请在Android SDK的官方文档中找到此信息: Android SDK API documentation, SignalStrength

使用此类,您可以使用方法

int getCdmaDbm()
  

以dBm

获取CDMA RSSI值

或:

int getEvdoDbm()
  

以dBm

获取EVDO RSSI值

作为替代方案,您可以查看自API级别1以来支持的TelephonyManager类。通过此方式,您可以了解移动设备的网络状态(public int getNetworkType ())目前(2G,3G,......)因此找出或至少转化为相应的“频率”。

希望这可以帮助您进行距离计算。