重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在你手机屏幕上方显示的信号条永远不会是最好的方法来确定你手机的信号,无论你用什么手机都一样。Android也是,用很粗的条来展示很强的信号,但这些条仅仅表示最高的信号。或许你并不熟悉,信号通常是以dBm度量的。dBm是每毫瓦特的电磁波产生的功率。-60dBm的信号接近完美,-112dBm就很容易掉线,如果你在 -87dBm以上,Android会显示一个4格的满信号。
专注于为中小企业提供成都网站制作、成都网站建设、外贸营销网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业吴桥免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
如果你想查看信号的原始数据,你可以查看Android菜单的状态屏幕。只要拉起菜单,向下滚动,选择关于手机,然后选择状态。在这个屏幕上,你将能看到你的信号以dBm 或者AUS的形式呈现。ASU仅仅代表手机将它的位置传递给附近的信号塔的速率。它和dBm测量的是一样的东西,但是是以一种更加线性的方式来表示。你可以用这个公式将ASU转换成dBm:dBm=-113+(2*ASU)。
首先,进入设置选项,在主屏界面中按下Android手机Menu键,在弹出的进阶菜单中选择最后一项“Settings”;
将滑动条拖动至最下方,点击“About Phone”分类;
选择第二项“Status”分类;
这时,就能够看到“Signal Strength”选项,前面的-xx(这是一个负数数字)dBm则是手机信号强度。一般“0”—“-50”之间都是一个非常不错的信号强度,而数值越小则代表着信号越差。
通过WifiManager的方法getScanResults()获取ListScanResult的集合,ScanResult.level就是信号强度是个负数,然后使用
WifiManager.calculateSignalLevel(scanResult.level,
100);就可得到确定的信号强度(calculateSignalLevel为计算信号等级函数,MAX_RSSI和MIN_RSSI分别为最强和最弱信号强度等级的信号强度阀值)。
要拿到蓝牙信号指示值 rssi 分为两个步骤。
1.在oncreate方法里面增加 注册扫描广播
public void onCreate(Bundle savedInstanceState) {
// 注册开始发现广播。
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED);
this.registerReceiver(mReceiver, filter);
}
2.新建BroadcastReceiver广播对象,并实现里面的onreceive方法,在onreceive得到rssi(信号强度)。
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//当设备开始扫描时。
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//从Intent得到blueDevice对象
BluetoothDevice device = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
//信号强度。
short rssi = intent.getExtras().getShort(
BluetoothDevice.EXTRA_RSSI);
}
}
}
};