为什么BluetoothDevice有时会成为字符串?

时间:2012-03-02 12:33:38

标签: android bluetooth logcat

BluetoothDevice是什么类型的? 在此代码中,当我在LogCat的Log()中使用它时,设备的工作方式类似于字符串(保存物理设备的UUID)。但我无法将其分配给字符串变量(Eclipse抱怨它是BluetoothDevice类型)。

String action = intent.getAction();
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.v(TAG, "Device="+device); //DISPLAYS "Device=58:17:1C:EB:E3:A8" IN LOGCAT
String d = device; // TYPE MISMATCH!
  • 如何通过LogCat中的UUID显示BluetoothDevice对象,就像它是一个字符串一样?

编辑: getName()崩溃是由于BluetoothDevice第一次返回null引起的,因为我从BluetoothAdapter收到ACTION_DISCOVERY_STARTED。这样就解决了。为什么BluetoothDevice有时是一个字符串仍然是神秘的。

2 个答案:

答案 0 :(得分:2)

它在日志中显示的原因是它实现了toString()(更多信息here),允许它自动转换为字符串进行记录。

如果您希望将硬件地址用作逻辑中的字符串,则应使用device.getAddress代替,其格式不太可能发生变化。

答案 1 :(得分:0)

您获得的device不是字符串,而是BluetoothDevice的实例 如果您需要此蓝牙设备的名称,可以使用:

device.getName(); //returns the string representation of this bluetooth

有趣的是,当您使用ArrayList<BluetoothDevice>作为ListView的输入之一时,列表中的输出是MAC地址,而不是您建议的UUID。

如果您需要UUID,可以使用:

uuid = device.getUuids()[0].getUuid();