如何使用 android SDK 计算我的 wifi 和 3g 的信号强度?
How can I calculate the signal strength of my wifi and 3g using android SDK?
我尝试制作一个应用程序来计算我的 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 使用相同的功能吗?如何使用?
请在 Android SDK 的官方文档中找到此信息:
Android SDK API documentation, SignalStrength.
有了这个class你就有了方法
int getCdmaDbm()
Get the CDMA RSSI value in dBm
或:
int getEvdoDbm()
Get the EVDO RSSI value in dBm
作为替代方案,您可以查看自 API 级别 1 以来受支持的 TelephonyManager
class。有了它,您就可以找出网络状态(public int getNetworkType ()
) 您的移动设备目前处于 (2G, 3G,...) 并因此找到或至少转换为相应的 "frequency".
希望这对您计算距离有所帮助。
我尝试制作一个应用程序来计算我的 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 使用相同的功能吗?如何使用?
请在 Android SDK 的官方文档中找到此信息: Android SDK API documentation, SignalStrength.
有了这个class你就有了方法
int getCdmaDbm()
Get the CDMA RSSI value in dBm
或:
int getEvdoDbm()
Get the EVDO RSSI value in dBm
作为替代方案,您可以查看自 API 级别 1 以来受支持的 TelephonyManager
class。有了它,您就可以找出网络状态(public int getNetworkType ()
) 您的移动设备目前处于 (2G, 3G,...) 并因此找到或至少转换为相应的 "frequency".
希望这对您计算距离有所帮助。