Android: Wechseln zwischen SPP-Bluetooth-Geräten

Ich habe zwei verschiedene Bluetooth-Drucker. Bixolon SPP-R200 und Fujitsu FTP-628WSL110. Ich kann mit jedem von ihnen separat (mit einem Samsung Galaxy SII) drucken, trennen und wieder verbinden, ganz gut. Wenn ich jedoch den Bixolon ausschalte und versuche, ihn mit dem Fujitsu zu koppeln (zuvor nicht gepaart, Bixolon ist immer noch gekoppelt), schlägt der Versuch fehl, eine Verbindung zum erstellten Socket herzustellen. Gleiche umgekehrt.

Hier ist die Fehlermeldung:

07-02 13:00:11.040: E/MyApp.BluetoothConnection(9380): Failed to connect to rfcomm socket.
07-02 13:00:11.040: E/MyApp.BluetoothConnection(9380): java.io.IOException: Service discovery failed
07-02 13:00:11.040: E/MyApp.BluetoothConnection(9380):  at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:406)
07-02 13:00:11.040: E/MyApp.BluetoothConnection(9380):  at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:217)
07-02 13:00:11.040: E/MyApp.BluetoothConnection(9380):  at MyApp.BluetoothConnection.connect(BluetoothConnection.java:171)
07-02 13:00:11.040: E/MyApp.BluetoothConnection(9380):  at MyApp.AbstractBluetoothPrinter.connect(AbstractBluetoothPrinter.java:34)

Hier ist der Code, der den Verbindungsversuch macht, die Zeile, die unter den erläuterten Umständen fehlschlägt, ist btSocket.connect (); - Ausnahme siehe oben:

/** Is set in connect() */
private BluetoothSocket btSocket = null;
/** Is set prior to connect() */
private BluetoothSocket btDevice;

public boolean connect(){

        try {
            btSocket = btDevice.createRfcommSocketToServiceRecord("00001101-0000-1000-8000-00805F9B34FB");
            if (btDevice.getName().startsWith("FTP")) {
                //Special treatment for the fujitsu printer
                SystemClock.sleep(1000);
            }
        } catch (Throwable e) {
            LogCat.e(TAG, "Failed to create rfcomm socket.", e);
            return false;
        }

        try {
            // Stop Bluetooth discovery if it's going on
            BluetoothHandler.cancelDiscovery();
            // This fails under the described circumstances
            btSocket.connect();
        } catch (Throwable e) {
            LogCat.e(TAG, "Failed to connect to rfcomm socket.", e);
            return false;
        }

        // Obtain streams etc...
}

Ich benutze diegleich UUID, zu der eine Verbindung hergestellt werden sollbeide Geräte (es wird immer nur ein Gerät gleichzeitig eingeschaltet, sie werden nie gleichzeitig eingeschaltet), die bekannte SPP-UUID aus der SDK-API:

00001101-0000-1000-8000-00805F9B34FB

Was mich wundert: Kann es sein, dass ich für jedes Gerät eine andere UUID benötige? Wenn ja, welche Idee?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage