BluetoothAdapter.getAddress() 获取到的地址是02:00:00:00:00:00
时间: 2023-10-23 21:10:11 浏览: 98
在某些情况下,BluetoothAdapter.getAddress()返回的确实是“02:00:00:00:00:00”。这是因为在Android 6.0及更高版本中,Google已经禁止应用程序获取设备的MAC地址,以保护用户的隐私。因此,如果您想要获取设备的唯一标识符,您可以考虑使用Android ID或者通过在应用程序中生成一个随机的UUID来实现。
相关问题
public void onAccepted(BluetoothSocket socket) { btManager = new BluetoothManager(socket); btManager.setServer(true); btManager.setOnReceivedListener(onReceivedListener); btManager.setOnEventListener(onEventListener); Toast.makeText(MainActivity.this,"收到一个蓝牙连接!",Toast.LENGTH_LONG).show(); setTitle("蓝牙连接到:" + btManager.getRemoteName()); if(bluetoothAddress == null){ BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); bluetoothAddress = bluetoothAdapter.getAddress(); } refreshData(); } };
这是实现了BluetoothServer.OnAcceptListener接口的onAccepted方法,当蓝牙连接被接受时,会执行该方法。在该方法内部,创建了一个BluetoothManager对象,并将socket传入进行初始化。接着设置了BluetoothManager的一些属性,比如设置为服务器端、设置数据接收监听器和事件监听器。然后显示一个Toast提示信息和设置标题。最后,如果bluetoothAddress为null,获取本地蓝牙适配器的地址并赋值给bluetoothAddress,最后调用了一个refreshData()方法。
private BluetoothManager.OnEventListener onEventListener = new BluetoothManager.OnEventListener() { @SuppressLint("MissingPermission") @Override public void onEvent(BluetoothManager d, int e) { Log.d(TAG, "onEvent: address="+d.getRemoteAddress()+",e="+e); switch (e) { case BluetoothManager.OnEventListener.CONNECT_SUCCESS: Toast.makeText(getBaseContext(), "蓝牙连接成功!", Toast.LENGTH_SHORT).show(); setTitle("蓝牙连接到:" + btManager.getRemoteName()); if(bluetoothAddress == null){ BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); bluetoothAddress = bluetoothAdapter.getAddress(); } refreshData(); break; case BluetoothManager.OnEventListener.BREAK_OFF: Toast.makeText(getBaseContext(), "蓝牙断开!", Toast.LENGTH_SHORT).show(); messageManageAdapter.updateData(new ArrayList<>()); setTitle("没有连接蓝牙"); break; case BluetoothManager.OnEventListener.DISCONNECT_SUCCESS: messageManageAdapter.updateData(new ArrayList<>()); Toast.makeText(getBaseContext(), "蓝牙断开成功!", Toast.LENGTH_SHORT).show(); setTitle("没有连接蓝牙"); break; case BluetoothManager.OnEventListener.CONNECT_FAILED: Toast.makeText(getBaseContext(), "蓝牙连接失败!", Toast.LENGTH_SHORT).show(); setTitle("没有连接蓝牙"); break; } } };
这是一段Java代码,其中定义了一个名为onEventListener的BluetoothManager.OnEventListener对象,并重写了onEvent方法。onEvent方法接收两个参数,一个是BluetoothManager对象,另一个是事件类型(int类型)。
具体来说:
- 在onEvent方法中,首先使用Log.d方法输出日志,记录远程设备地址和事件类型。
- 然后使用switch语句根据事件类型进行处理。
- 当事件类型为BluetoothManager.OnEventListener.CONNECT_SUCCESS时,提示蓝牙连接成功,并设置标题为已连接的远程设备名称。如果bluetoothAddress为null,则获取本地蓝牙适配器的地址并赋值给bluetoothAddress,然后刷新数据。
- 当事件类型为BluetoothManager.OnEventListener.BREAK_OFF时,提示蓝牙断开,并清空数据,设置标题为“没有连接蓝牙”。
- 当事件类型为BluetoothManager.OnEventListener.DISCONNECT_SUCCESS时,清空数据,提示蓝牙断开成功,并设置标题为“没有连接蓝牙”。
- 当事件类型为BluetoothManager.OnEventListener.CONNECT_FAILED时,提示蓝牙连接失败,并设置标题为“没有连接蓝牙”。
请问您还有其他问题需要咨询吗?
阅读全文