我正在开发一个我必须连接蓝牙设备的应用程序。
我可以扫描蓝牙设备并列出由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();
}
}
});
当我执行APP时,它总是在我输入以下代码时出现:
BluetoothDevice connect_device = mBluetoothAdapter.getRemoteDevice(address);
但是当我将字符串“address
”更改为地址device.getAddress
时,它正常工作。
我显示字符串address
。
它的内容是bluetoothdevice的MAC地址,但它的类型是字符串。
此处getRemoteDevice
的类型我选择字符串。
所以我不知道为什么APP在使用字符串address
时总会崩溃???
答案 0 :(得分:0)
MAC地址由17个字符组成,您需要18个字符。
String address = info.substring(info.length()-17);
答案 1 :(得分:0)
我不知道是否需要带有子字符串信息等的那段代码。尝试简单地初始化你的字符串:
String address = device.getAddress;