
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);
CellInfoManagerimport 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()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)