SignalStrength - getSignalStrength() - getLevel()
SignalStrength - getSignalStrength() - getLevel()
我可以通过回调
轻松获得 Android 中的 sigalStrength
onSignalStrengthsChanged(SignalStrength signalStrength)
并通过传递的对象检索信号强度
int signal_strength = signalStrength.getGsmSignalStrength();
根据文档,该值在 0 到 39.99 之间变化
现在我想在我的应用程序中显示这个指示器,该指示器随着信号强度的变化而更新 - 正是您在 phone.
的状态栏中看到的内容
所以我的问题 - 我如何为此使用变量?如果它是线性的,那么很容易只使用 1 - 10、11 - 20 等的间隔。但我想它并不那么容易?
我知道我可以通过调用 ..
来标准化这个值
int level = signalStrength.getLevel()
也就是说,通过调用 getLevel 然后我得到一个介于 0 - 4 之间的值,就像 RSSI 对 WIFI 所做的那样。但问题是它需要 api 23,这意味着我只能达到 android 市场的大约 40%。
那么 - 如果我不想使用 getLevel,我该如何相应地使用 getGsmSignalStrength()?
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int signal_strength = signalStrength.getGsmSignalStrength();
//int level = signalStrength.getLevel(); //api 23
Toast.makeText(context, "signalStrength: " + signal_strength, Toast.LENGTH_SHORT).show();
}
在您的 onSignalStrengthsChanged
中尝试以下代码片段。我用反射实现了它。它适用于所有类型的网络 类。希望能帮助到你。
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int level = 0;
try {
final Method m = SignalStrength.class.getDeclaredMethod("getLevel", (Class[]) null);
m.setAccessible(true);
level = (Integer) m.invoke(signalStrength, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
我可以通过回调
轻松获得 Android 中的 sigalStrength onSignalStrengthsChanged(SignalStrength signalStrength)
并通过传递的对象检索信号强度
int signal_strength = signalStrength.getGsmSignalStrength();
根据文档,该值在 0 到 39.99 之间变化
现在我想在我的应用程序中显示这个指示器,该指示器随着信号强度的变化而更新 - 正是您在 phone.
的状态栏中看到的内容所以我的问题 - 我如何为此使用变量?如果它是线性的,那么很容易只使用 1 - 10、11 - 20 等的间隔。但我想它并不那么容易?
我知道我可以通过调用 ..
来标准化这个值 int level = signalStrength.getLevel()
也就是说,通过调用 getLevel 然后我得到一个介于 0 - 4 之间的值,就像 RSSI 对 WIFI 所做的那样。但问题是它需要 api 23,这意味着我只能达到 android 市场的大约 40%。
那么 - 如果我不想使用 getLevel,我该如何相应地使用 getGsmSignalStrength()?
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int signal_strength = signalStrength.getGsmSignalStrength();
//int level = signalStrength.getLevel(); //api 23
Toast.makeText(context, "signalStrength: " + signal_strength, Toast.LENGTH_SHORT).show();
}
在您的 onSignalStrengthsChanged
中尝试以下代码片段。我用反射实现了它。它适用于所有类型的网络 类。希望能帮助到你。
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
int level = 0;
try {
final Method m = SignalStrength.class.getDeclaredMethod("getLevel", (Class[]) null);
m.setAccessible(true);
level = (Integer) m.invoke(signalStrength, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}