为什么在3g模式下,我们必须设置一个监听器才能得到单个当前小区的信号强度?
我们使用NeghbouringcellInfo类得到相邻小区的信号强度?
为什么我们不能像那样得到当前单元的信号强度?
发布于 2012-12-04 21:11:07
我们必须实现listener来获得当前单元的信号强度,我已经编写了listener,并在第一次读取时停止了listener,然后将其保持在变量中。不,没有其他方法。
发布于 2012-10-01 21:29:14
尝试以下代码:
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
if (is3g) {
myListener = new MyPhoneStateListener();
TelephonyManager telManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telManager.listen(myListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
private class MyPhoneStateListener extends PhoneStateListener {
public int singalStenths = 0;
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength){
super.onSignalStrengthsChanged(signalStrength);
int singalStrength = signalStrength.getGsmSignalStrength();
singalStenths = signalStrength.getGsmSignalStrength();
System.out.println("----- gsm strength" + singalStrength );
System.out.println("----- gsm strength" + singalStenths );
if (singalStenths > 30) {
signalstrength.setText("Signal Str : Good");
signalstrength.setTextColor(getResources().getColor(R.color.good));
}
else if(singalStenths > 20 && singalStenths < 30) {
signalstrength.setText("Signal Str : Average");
signalstrength.setTextColor(getResources().getColor(R.color.average));
}
else if(singalStenths < 20) {
signalstrength.setText("Signal Str : Weak");
signalstrength.setTextColor(getResources().getColor(R.color.weak));
}
}
};发布于 2013-04-03 14:52:39
我试图使用"Hazmat“代码,但不幸的是在我的设备上不起作用(三星S3迷你安卓4.1.2)。似乎三星的一些手机在这个功能上有问题,三星没有人关心这一点。Also other Samsung models have similar problem
三星Galaxy SI ->没有问题
三星Galaxy SII ->无强度且无更新
三星Galaxy Tab 10.1 ->无强度且无刷新
三星Galaxy Note ->无强度,无更新
(Android版本: 2.3.3、2.3.4、2.3.5、3.1)
结论:请注意,许多三星设备不能正常使用此功能!我不知道有任何解决方法。三星让我们的应用变得不可靠。
https://stackoverflow.com/questions/12674216
复制相似问题