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
}
InformationsquelleAutor Philip Sheard | 2011-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke der Grund dafür könnte sein, dass der Bluetooth-stack auf android, die Sie verwenden möglicherweise nicht die Unterstützung der BPP-Profil , wenn Sie mit der standard-android-Versionen nicht unterstützt BPP.
Den Mechanismus der socket-Erstellung fehlschlägt, weil der Drucker nicht implementiert das SPP-Profil. Die android-Beispiele hängt von der server-Seite SPP zu hören in der Lage sein, um eine Verbindung vom client. Der Drucker wird sicher nicht generic SPP-server lauscht.
Ein update auf diesen thread? Hat Android die Unterstützung der BPP? Wenn der Drucker nicht unterstützt SPP, wie können wir durchführen, Druck Aufgabe aus dem Telefon?
Android nicht unterstützt IPP, aber es gibt eine Reihe von bezahlten Android-apps, print, Wi-Fi-Drucker, so dass ich denke, es ist nur eine Frage der Ihre eigenen Rollen. HP ePrint funktioniert, wenn beide Geräte eine internet-Verbindung.
Philip, Sie haben erwähnt, dass das Palm OS verwendet ein viel einfacheres Paradigma. Könnten Sie das näher erläutern?
FYI. Ich war in der Lage zu drucken über Bluetooth von einem Nokia Handy auf ein bluetooth-dongle-Drucker (Kodak ESP-3 All-in-one-Drucker).
InformationsquelleAutor Dennis Mathews
Versuchen Sie dies:
InformationsquelleAutor Rajesh
Es gibt verschiedene bluetooth-profile, die vielleicht verwendet für den Druck nämlich, HCRP, BPP, SPP, OPP, DirectPrinting etc. (Ref: http://www.alanjmcf.me.uk/comms/bluetooth/Bluetooth%20Profiles%20and%2032feet.NET.html#_Toc266869878)
Versuchen diese anderen profile (UUIDs), um zu versuchen, ein " - Buchse.verbinden mit dem Drucker...
Vielleicht ist Ihr Palm OS-Gerät wäre mit einem anderen Profil als BPP?
Übrigens Philip, für Ihren Drucker - HP DeskJet 450wbt, sind Sie mit einem generischen Bluetooth-dongle oder etwas, das Sie gekauft haben, die speziell für Ihren Drucker von HP?
Oder nicht, Ihr Drucker unterstützt Bluetooth out of the box, ohne die Notwendigkeit für plugins mit einem Bluetooth-adapter?
Vielleicht können Sie Sie beantworten meine Frage hier:
können generische Bluetooth-dongle verwendet werden, für die Drucker, die drucken unterstützen, über Bluetooth?
Lassen Sie mich wissen, wie es funktioniert für Sie heraus.
Sie haben absolut Recht. Der bluetooth-stack-Implementierung, die derzeit in Android nicht bieten Unterstützung für Bluetooth-Profile (BPP, HCRP etc). Es gibt allerdings eine Lösung über die "Sybase-iAnywhere-Blau-SDK-for-Android", die sich um die mehr full-featured Bluetooth-Stack für Android-mit " native-code für das zugrunde liegende Linux-kernel von Android. Siehe meine Antwort oben für links und Infos zu diesem SDK.
InformationsquelleAutor Roy Samuel
Wenn Ihr Handy-Modell (hier Android) verfügt über eine integrierte Unterstützung für die Bluetooth-Printing-Profil, dann das Telefon unterstützt das drucken auf einem Bluetooth-Drucker. Wenn Sie nicht sehen, keine Einstellungen/Optionen auf Ihrem Telefon zu drucken (zum Beispiel von der integrierten Foto-Galerie-Anwendungen), um einen Bluetooth-Drucker, dann aller Wahrscheinlichkeit nach das Mobiltelefon unterstützt keine Bluetooth-drucken.
Wenn der support nicht eingebaut, gibt es wenig oder keine chance für das hinzufügen der Unterstützung; es hat zu kommen von den Hersteller des Geräts(hier Android).
(Ref: http://discussion.forum.nokia.com/forum/showthread.php?76295-Bluetooth-printing-option-in-application)
Für die Bluetooth-Profil-Unterstützung implementiert werden, die auf Android, es ist ein Projekt mit dem Namen "Sybase-iAnywhere-Blau-SDK-for-Android", das ersetzt die Android version, und versorgt alle Schnittstellen in das zu Grunde liegende Bluetooth-profile und Protokolle. Mit dieser, drucken über bluetooth mit Ihrem Android-Handy möglich sein wird, mit dem BPP-Profil von diesem SDK.
Siehe die links unten für weitere details:
link 1:
http://www.sybase.com/detail?id=1064424
Link 2:
http://www.sybase.com/products/allproductsa-z/mobiledevicesdks/bluetoothsdks
InformationsquelleAutor Roy Samuel