Bluetooth-Drucken auf Android

Bin ich versucht, drucken auf einem HP DeskJet 450wbt Drucker von meinem T-Mobile Pulse Mini-Handy mit dem Android-Bluetooth-API. Der code sieht wie unten gezeigt aus. Die Verbindung schlägt fehl mit "Service discovery failed". Wenn ich versuche, die alternative Methode zum erstellen einer socket-erwähnt in anderen threads, ich erhalte die Meldung "Host is down" statt.

Ich denke, dass die UUID für die BPP ist richtig, aber ich bin mir nicht sicher. Der Drucker ist mit einem gekoppelten Gerät, und es ist eingeschaltet. Ich finde keine USB Treiber für mein Handy (ein badged Huawei 8110), so dass ich nicht in der Lage gewesen zu Debuggen auf dem Gerät, oder an ein log. Ich stecke an diesem Punkt, und ich wäre dankbar für jeden Rat.

Hier ist eine Zusammenfassung von meinem code:

final String UUID_BPP = "00001122-0000-1000-8000-00805F9B34FB";
final String printerName = "dj450 S/N SG..."; //name of paired printer

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (bluetoothAdapter == null) {
    return 2; //phone does not support Bluetooth
}

if (!bluetoothAdapter.isEnabled()) {
    return 3; //Bluetooth has not been enabled
}

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();

//Loop through paired devices
BluetoothDevice printer = null;

for (BluetoothDevice device : pairedDevices) {
    String s = device.getName();

    if (s.equals(printerName)) {
        printer = device;
        break;
    }
}

if (printer == null)
    return 4; //Paired printer not found

//create socket
UUID BPP = UUID.fromString(UUID_BPP);
BluetoothSocket socket;

try {
    socket = printer.createRfcommSocketToServiceRecord(BPP);
} catch (IOException e) {
    return 5; //Unable to create socket
}
/*
try {
    Method m = printer.getClass().getMethod("createRfcommSocket", 
        new Class[] { int.class });

    socket = (BluetoothSocket) m.invoke(printer, 1);
} catch (Exception e1) {
    return 5; //Unable to create socket
}
*/
try {
    socket.connect(); 
} catch (IOException e) {
    return 6; //Unable to connect socket
}
Obwohl ich gezeichnet habe, eine leere, die auf diesem besonderen Problem. Ich habe es geschafft, drucken auf WLAN-Druckern, ohne Verwendung von Drittanbieter-software.

InformationsquelleAutor Philip Sheard | 2011-03-08

Schreibe einen Kommentar