4

我正在做一个蓝牙项目,我想在其中以编程方式使用蓝牙连接两个设备。

我正在遵循 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
4

1 回答 1

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

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

于 2012-04-16T10:04:56.837 回答