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