我正在开发一个必须连接到蓝牙设备的应用程序。
我可以扫描蓝牙设备并列出通过 ListView 配对的设备。
当我单击 ListView 上的设备时,我想连接到蓝牙设备。
此 java 代码是我单击 ListView 上的设备项时的操作。
pair_devices_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
AlertDialog.Builder deviceInfo = new AlertDialog.Builder(DeviceList.this);
mBluetoothAdapter.cancelDiscovery();//stop scan
String info = ((TextView) arg1).getText().toString();
String address = info.substring(info.length()-18);
BluetoothDevice connect_device = mBluetoothAdapter.getRemoteDevice(address);
try {
BluetoothSocket socket = connect_device.createRfcommSocketToServiceRecord(my_UUID);
socket.connect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
当我执行应用程序时,当我输入以下代码时它总是崩溃:
BluetoothDevice connect_device = mBluetoothAdapter.getRemoteDevice(address);
但是当我将字符串“ address
”更改为地址device.getAddress
时,它工作正常。
我显示字符串address
。它的内容是蓝牙设备的 MAC 地址,但它的类型是字符串。
而getRemoteDevice
这里我选择字符串的类型。
所以我不知道为什么我使用字符串的时候APP总是崩溃address
???