以编程方式使用蓝牙连接两个Android设备

时间:2012-04-15 10:56:09

标签: android

我正在做一个蓝牙项目,其中我想使用blutooth programaticaly连接两个设备。

我遵循tf developer.android.com的指南和代码。任何人都可以帮我解决这个问题吗?这是我试过的代码。

任何人都可以告诉我构造函数从哪里接收设备对象吗?

private class ConnectThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final BluetoothDevice mmDevice;

<!-- can anyone tell me from where device object comes here   --!>
        public ConnectThread(BluetoothDevice device) {
            // Use a temporary object that is later assigned to mmSocket,
            // because mmSocket is final
            BluetoothSocket tmp = null;
            mmDevice = device;

            // Get a BluetoothSocket to connect with the given BluetoothDevice
            try {
                // MY_UUID is the app's UUID string, also used by the server code
                tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
            } catch (IOException e) { }
            mmSocket = tmp;
        }

        public void run() {
            // Cancel discovery because it will slow down the connection
            mBluetoothAdapter.cancelDiscovery();

            try {
                // Connect the device through the socket. This will block
                // until it succeeds or throws an exception
                mmSocket.connect();
            } catch (IOException connectException) {
                // Unable to connect; close the socket and get out
                try {
                    mmSocket.close();
                } catch (IOException closeException) { }
                return;
            }

            // Do work to manage the connection (in a separate thread)
            manageConnectedSocket(mmSocket);
        }

        /** Will cancel an in-progress connection, and close the socket */
        public void cancel() {
            try {
                mmSocket.close();
            } catch (IOException e) { }
        }
    }


Thanks inadvance

1 个答案:

答案 0 :(得分:0)

以下是我完成任务的部分代码。

    /**
     * Searches the list of paired devices for the device. Returns
     * if found, throws Exception otherwise.
     * 
     * @param sTargetDeviceName
     * @return BluetoothDevice 
     */
    private BluetoothDevice findDevice(String sTargetDeviceName) 
    throws Exception {

            BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

            Set<BluetoothDevice> devices = adapter.getBondedDevices();

            for (BluetoothDevice device : devices) {

                    String sDeviceName = device.getName().trim();

                    if (sDeviceName.startsWith(sTargetDeviceName)) {
                            return device;
                    }
            }

            throw new Exception("Device " + sTargetDeviceName + " not found");
    }

要使用上述代码,设备必须已配对。

请参阅文档:

http://developer.android.com/guide/topics/wireless/bluetooth.html

特别是“查找设备”部分。