3

Android BluetoothChat プログラムで Line

      tmp = device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);

「サービスの検出に失敗しました」という例外が表示されます。

      private static final UUID MY_UUID_SECURE = UUID
        .fromString("00001101-0000-1000-8000-00805F9B34FB");


      public ConnectThread(BluetoothDevice device, boolean secure) {
        mmDevice = device;
        BluetoothSocket tmp = null;
        mSocketType = secure ? "Secure" : "Insecure";

        // Get a BluetoothSocket for a connection with the
        // given BluetoothDevice
        try {
            if (secure) {
                tmp = device.createRfcommSocketToServiceRecord(MY_UUID_SECURE);
            } else {
                tmp = device.createInsecureRfcommSocketToServiceRecord(MY_UUID_INSECURE);
            }
        } catch (Exception e) {
            Log.e(TAG, "Socket Type: " + mSocketType + "create() failed", e);
        }
        mmSocket = tmp;
    }

    public void run() {
        Log.i(TAG, "BEGIN mConnectThread SocketType:" + mSocketType);
        setName("ConnectThread" + mSocketType);

        // Always cancel discovery because it will slow down a connection
        mAdapter.cancelDiscovery();

        // Make a connection to the BluetoothSocket
        try {
            // This is a blocking call and will only return on a
            // successful connection or an exception
            mmSocket.connect();
        } catch (IOException e) {
            try {
                mmSocket.close();
            } catch (IOException e2) {
                Log.e(TAG, "unable to close() " + mSocketType
                        + " socket during connection failure", e2);
            }
            connectionFailed();
            return;
        }

        // Reset the ConnectThread because we're done
        synchronized (BluetoothChatService.this) {
            mConnectThread = null;
        }

        // Start the connected thread
        connected(mmSocket, mmDevice, mSocketType);
    }

ここで mmSocket.connect(); 接続せず、「サービスの検出に失敗しました」という例外が表示されます。

私が試してみました

            Method  m = device.getClass().getMethod("createRfcommSocket",new Class[] { int.class });
            tmp = (BluetoothSocket) m.invoke(device, 1);

しかし、同じ例外が来ています。考えられる解決策を教えてください...

4

0 に答える 0