So,this is my question,I want to know the main device how to get the bluetooth mac itself.I try to use adapter.getAddress()
and reflect methods,all kind of ways ets,but no one works right...please do me a favor!
BluetoothAdapter.getDefaultAdapter().startLeScan(callback)
BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(BluetoothDevice deviceTmp, int rssi,
byte[] scanRecord) {
String strDeviceName = deviceTmp.getName();
if (strDeviceName != null) {
Log.i(tag, "action_found , " + deviceTmp.getName() + "mac = " + deviceTmp.getAddress());
2018年9月4日10:49:15 add new code
public static String getBtAddressByReflection() {
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Field field = null;
try {
field = BluetoothAdapter.class.getDeclaredField("mService");
field.setAccessible(true);
Object bluetoothManagerService = field.get(bluetoothAdapter);
if (bluetoothManagerService == null) {
return null;
}
Method method = bluetoothManagerService.getClass().getMethod("getAddress");
if(method != null) {
Object obj = method.invoke(bluetoothManagerService);
if(obj != null) {
return obj.toString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}