Java怎么获取笔记本电脑的无线网卡的RSSI(

Java怎么获取笔记本电脑的无线网卡的RSSI(,第1张

笔记本查看mac地址的方法:

1、鼠标左键点击任务栏的“开始”按钮→运行→在d出的“运行”源胡窗口的“打开”文本框内输入“cmd”,然后单击“确定”按钮:

系统将d出如下窗口

2、在新窗口中输入命令“ipconfig /all”后回车雹郑拦,在显示的结果中找到丛渣类似

Physical Address. . . . . . . . . : 00-E0-4C-3F-14-DE行,其中类似“00-E0-4C-3F-14-DE”的地址即为当前机器的网卡的mac地址。

我正在开发一个应用程序有连接到蓝牙设备的 Android 4.3。

我可以连接到 BLE 设备和从设备中读取 RSSI,通过使用 BluetoothGatt.readRemoteRssi()。

我想要读的多个设备一次我已连接,但我可以只读 BLE RSSI 设备 RSSI 的最后一次,我连接的设备。

如果有两个 BLE 设备 A 和 B。我连接到A 的铅困拆设备,并读取该 RSSI。之后,我连接到B 的设备,和我可以从设备 B读取 RSSI。但它并不读取设备 A的 RSSI,它只能从设备 B读取 RSSI。

在Main.java ,它列出已连接的位置的所有设备。

当我单击该设备,在列表上,它把传送的设备的名称尺者和地址到DeviceControl.java。

final Intent qintent = new Intent(this, DeviceControl.class);

devicelist.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?>arg0, View arg1, int arg2,

long arg3) {

// TODO Auto-generated method stub

HashMap<String, Object>select = (HashMap<String, Object>) devicelist.getItemAtPosition(arg2);

String name = (String) select.get(“name”);

 槐枣 String address = (String) select.get(“address”);

qintent.putExtra(DeviceControl.EXTRAS_DEVICE_NAME, name);

qintent.putExtra(DeviceControl.EXTRAS_DEVICE_ADDRESS, address);

startActivity(qintent);

}

});

DeviceControl.java将调用BluetoothLeService.java和连接到设备。

private final ServiceConnection mServiceConnection = new ServiceConnection() {

@Override

public void onServiceConnected(ComponentName componentName, IBinder service) {

// TODO Auto-generated method stub

mBluetoothLeService = ((BluetoothLeService.LocalBinder) service)。getService();

if(!mBluetoothLeService.initialize()) {

Log.e(TAG, “Unable to initialize Bluetooth”);

finish();

}

registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());

mBluetoothLeService.connect(mDeviceAddress);

}

@Override

public void onServiceDisconnected(ComponentName componentName) {

// TODO Auto-generated method stub

mBluetoothLeService = null

}

}

BluetoothLeService.java将连接到该设备。

public boolean connect(final String address) {

if (mBluetoothAdapter == null || address == null) {

Log.w(TAG, “BluetoothAdapter not initialized or unspecified address.”);

return false

}

if(mBluetoothDeviceAddress != null &&address.equals(mBluetoothDeviceAddress)

&&mBluetoothGatt != null) {

Log.d(TAG, “Trying to use an existing mBluetoothGatt for connection.”);

if(mBluetoothGatt.connect()) {

mConnectionState = STATE_CONNECTING

return true

}else {

return false

}

}

final BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

if(device == null) {

Log.w(TAG, “Device not found. Unable to connect”);

return false

}

mBluetoothGatt = device.connectGatt(this, false, mGattCallback);

Log.d(TAG, “Try to create a new connection”);

mBluetoothDeviceAddress = address

mConnectionState =STATE_CONNECTING

return true

}

它连接到设备后,我可以使用 readRemoteRssi 来从设备中读取 RSSI。

public void readRemoteRssi() {

mBluetoothGatt.readRemoteRssi();

}

但它只能读取 RSSI 的最后一个设备的我已连接。

当我看到日志时,它总是发送onCharacteristicWrite和readRemoteRssi()到我连接的最后一个设备。

我应该重新连接关贸总协定 》 或之前我想 RSSI 对读取或写入的 CharacteristicWrite 值的第一个设备重新连接到的第一个地址的设备概览

它不会有其他的方法来读取我已连接的所有设备的 RSSI 概览

解决方法 1:

使多个 BluetoothGatt 对象来连接多个设备分开,并调用 readRemoteRssi 一个接一个。

懒的和坏的示例中,您应该能够将那些 BluetoothGatt 对象放入数组

BluetoothGatt mBluetoothGatt1 = device1.connectGatt(this, false, mGattCallback);

BluetoothGatt mBluetoothGatt2 = device2.connectGatt(this, false, mGattCallback);

CellInfoManager

import java.lang.reflect.Method

import java.util.Iterator

import java.util.List

import org.json.JSONArray

import org.json.JSONException

import org.json.JSONObject

import android.content.Context

import android.telephony.CellLocation

import android.telephony.NeighboringCellInfo

import android.telephony.PhoneStateListener

import android.telephony.TelephonyManager

import android.telephony.gsm.GsmCellLocation

import android.util.Log

public class CellInfoManager {

private int asu

private int bid

private int cid

private boolean isCdma

private boolean isGsm

private int lac

private int lat

private final PhoneStateListener listener

private int lng

private int mcc

private int mnc

private int nid

private int sid

private TelephonyManager tel

private boolean valid

private Context context

public CellInfoManager(Context paramContext) {

this.listener = new CellInfoListener(this)

tel = (TelephonyManager) paramContext.getSystemService(Context.TELEPHONY_SERVICE)

this.tel.listen(this.listener, PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_SIGNAL_STRENGTH)

context = paramContext

}

public static int dBm(int i) {

int j

if (i >= 0 &&i <= 31)

j = i * 2 + -113

else

j = 0

return j

}

public int asu() {

return this.asu

}

public int bid() {

if (!this.valid)

update()

return this.bid

}

public JSONObject cdmaInfo() {

if (!isCdma()) {

return null

}

JSONObject jsonObject = new JSONObject()

try {

jsonObject.put("bid", bid())

jsonObject.put("sid", sid())

jsonObject.put("nid", nid())

jsonObject.put("lat", lat())

jsonObject.put("lng", lng())

} catch (JSONException ex) {

jsonObject = null

Log.e("CellInfoManager", ex.getMessage())

}

return jsonObject

}

public JSONArray cellTowers() {

JSONArray jsonarray = new JSONArray()

int lat

int mcc

int mnc

int aryCell[] = dumpCells()

lat = lac()

mcc = mcc()

mnc = mnc()

if (aryCell == null || aryCell.length <2) {

aryCell = new int[2]

aryCell[0] = cid

aryCell[1] = -60

}

for (int i = 0i <aryCell.lengthi += 2) {

try {

int j2 = dBm(i + 1)

JSONObject jsonobject = new JSONObject()

jsonobject.put("cell_id", aryCell[i])

jsonobject.put("location_area_code", lat)

jsonobject.put("mobile_country_code", mcc)

jsonobject.put("mobile_network_code", mnc)

jsonobject.put("signal_strength", j2)

jsonobject.put("age", 0)

jsonarray.put(jsonobject)

} catch (Exception ex) {

ex.printStackTrace()

Log.e("CellInfoManager", ex.getMessage())

}

}

if (isCdma())

jsonarray = new JSONArray()

return jsonarray

}

public int cid() {

if (!this.valid)

update()

return this.cid

}

public int[] dumpCells() {

int[] aryCells

if (cid() == 0) {

aryCells = new int[0]

return aryCells

}

List<NeighboringCellInfo>lsCellInfo = this.tel.getNeighboringCellInfo()

if (lsCellInfo == null || lsCellInfo.size() == 0) {

aryCells = new int[1]

int i = cid()

aryCells[0] = i

检举补充回答:

return aryCells

}

int[] arrayOfInt1 = new int[lsCellInfo.size() * 2 + 2]

int j = 0 + 1

int k = cid()

arrayOfInt1[0] = k

int m = j + 1

int n = asu()

arrayOfInt1[j] = n

Iterator<NeighboringCellInfo>iter = lsCellInfo.iterator()

while (true) {

if (!iter.hasNext()) {

break

}

NeighboringCellInfo localNeighboringCellInfo = (NeighboringCellInfo) iter.next()

int i2 = localNeighboringCellInfo.getCid()

if ((i2 <= 0) || (i2 == 65535))

continue

int i3 = m + 1

arrayOfInt1[m] = i2

m = i3 + 1

int i4 = localNeighboringCellInfo.getRssi()

arrayOfInt1[i3] = i4

}

int[] arrayOfInt2 = new int[m]

System.arraycopy(arrayOfInt1, 0, arrayOfInt2, 0, m)

aryCells = arrayOfInt2

return aryCells

}

public JSONObject gsmInfo() {

if (!isGsm()) {

return null

}

JSONObject localObject = null

while (true) {

try {

检举补充回答: JSONObject localJSONObject1 = new JSONObject()

String str1 = this.tel.getNetworkOperatorName()

localJSONObject1.put("operator", str1)

String str2 = this.tel.getNetworkOperator()

if ((str2.length() == 5) || (str2.length() == 6)) {

String str3 = str2.substring(0, 3)

String str4 = str2.substring(3, str2.length())

localJSONObject1.put("mcc", str3)

localJSONObject1.put("mnc", str4)

}

localJSONObject1.put("lac", lac())

int[] arrayOfInt = dumpCells()

JSONArray localJSONArray1 = new JSONArray()

int k = 0

int m = arrayOfInt.length / 2

while (true) {

if (k >= m) {

localJSONObject1.put("cells", localJSONArray1)

localObject = localJSONObject1

break

}

int n = k * 2

int i1 = arrayOfInt[n]

int i2 = k * 2 + 1

int i3 = arrayOfInt[i2]

JSONObject localJSONObject7 = new JSONObject()

localJSONObject7.put("cid", i1)

localJSONObject7.put("asu", i3)

localJSONArray1.put(localJSONObject7)

k += 1

}

} catch (JSONException localJSONException) {

localObject = null

}

}

}

public boolean isCdma() {

if (!this.valid)

update()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12216499.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存