Falha na exceção de descoberta de serviço usando Bluetooth no Android

Atualmente, estou trabalhando em um aplicativo Android que se conecta a um instrumento via Bluetooth e precisa escrever comandos de sequência e receber respostas de sequência novamente. Atualmente, tenho a conexão / leitura / gravação funcionando para TCP / IP por Wi-Fi e agora tentando implementar o Bluetooth. Mas estou enfrentando alguns obstáculos. Eu tenho pesquisado na web tentando encontrar exemplos de algo semelhante e não tive sorte. Estou usando o exemplo de recurso para desenvolvedor do Android: Bluetooth Chat como meu principal ponto de referência.

Meu código atual parece funcionar .. Em seguida, ele lança uma exceção Falha na descoberta de serviço no ponto da conexão. Estou usando oDeviceListActivity classe para fazer a descoberta e a seleção do dispositivo ao qual quero me conectar. Ele retorna anActivityResult e, em seguida, minha classe Bluetooth espera que ele lide com isso e depois se conecta a ele. O código abaixo é quase idêntico ao Bluetooth Chat App.

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(!m_BluetoothAdapter.isEnabled())
    {
        m_BluetoothAdapter.enable();
    }
    switch (requestCode) {
        case REQUEST_CONNECT_DEVICE:
            // When DeviceListActivity returns with a device to connect
            if (resultCode == Activity.RESULT_OK) {
                // Get the device MAC address
                String address = data.getExtras()
                                     .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                // Get the BLuetoothDevice object
                BluetoothDevice device = m_BluetoothAdapter.getRemoteDevice(address);
                // Attempt to connect to the device
                connect(device);
            }
            break;

        case REQUEST_ENABLE_BT:
            // When the request to enable Bluetooth returns
            if (resultCode == Activity.RESULT_OK) {
                // Bluetooth is now enabled, so set up a chat session
            }
            else {
                // User did not enable Bluetooth or an error occured

                Toast.makeText(this, "Bluetooth not enabled", Toast.LENGTH_SHORT).show();
                finish();
            }
    }
}

Esta é a minha função de conexão:

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

private void connect(BluetoothDevice device) {
    m_Device = device;
    BluetoothSocket tmp = null;

    // Get a BluetoothSocket for a connection with the
    // given BluetoothDevice
    try {
        tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    }
    catch (IOException e) {

    }
    m_Socket = tmp;

    m_BluetoothAdapter.cancelDiscovery();

    try {
        // This is a blocking call and will only return on a
        // successful connection or an exception
        m_Socket.connect();
    }
    catch (IOException e) {
        try {
            m_Socket.close();
        }
        catch (IOException e2) {
        }
        return;
    }
}

Felizmente, tudo o que estou fazendo de errado é simples, mas temo que nunca seja tão fácil. Esta é a primeira vez que desenvolvo um Bluetooth e talvez esteja fazendo algo descaradamente errado ... Mas não sei por que recebo a exceção de falha na descoberta de serviços.

Você pode emparelhar / encontrar o dispositivo o tempo todo manualmente no telefone ... Requer uma senha, mas não acho que esse seja o problema que estou tendo.

questionAnswers(5)

yourAnswerToTheQuestion