如何在Android中连接蓝牙设备?

时间:2013-10-01 12:34:10

标签: java android bluetooth

我正在开发一个我必须连接蓝牙设备的应用程序。

我可以扫描蓝牙设备并列出由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时总会崩溃???

2 个答案:

答案 0 :(得分:0)

MAC地址由17个字符组成,您需要18个字符。

String address = info.substring(info.length()-17);

答案 1 :(得分:0)

我不知道是否需要带有子字符串信息等的那段代码。尝试简单地初始化你的字符串:

String address = device.getAddress;