我正在努力创建一个连接蓝牙条码扫描器的Android应用程序。我一直在寻找如何做到这一点的代码示例,但我找不到任何与设备连接的处理。我看到很多用于连接点对点的Android设备,但这似乎并没有涵盖android到设备。
这是我到目前为止的代码。它在连接拒绝连接的呼叫中失败。
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
socket = mDevice.createRfcommSocketToServiceRecord(uuid);
socket.connect();
06-11 15:29:10.113: W/System.err(20018): java.io.IOException: Connection refused
06-11 15:29:10.133: W/System.err(20018): at android.bluetooth.BluetoothSocket.connectNative(Native Method)
06-11 15:29:10.133: W/System.err(20018): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:212)
该设备与Android手机配对,我使用此功能从手机中检索。
Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();
答案 0 :(得分:1)
此ID仅在条形码扫描仪提供标准蓝牙SPP接口时有效。你确定这个设备甚至使用那个UUID吗?
去寻找连接此扫描仪的任何文档 - 甚至只是一台PC。并通过它,即使它不是你现在想要做的。您可能会了解有关系统的一些信息或获得有关系统实际工作方式的想法。
例如,PC的特殊驱动程序安装使其能够执行任何操作将指向它不是SPP配置文件。或者,如果有一个PC应用程序用于连接到“串行端口”的扫描仪工作,那么它几乎肯定是一个SPP配置文件。
如果它不是SPP配置文件,那么与PC之类的工作连接至少可以让你有机会嗅探连接,也可能是数据传输,为android设计逆向工程。
此外,通过基线检查硬件是否适用于某个特定应用程序,您可以排除硬件故障。 (当你在它的时候检查你的Android设备的蓝牙链接!)
答案 1 :(得分:1)
我确实找到了解决这个问题的方法,但我不确定为什么这个有效,而另一个没有。
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
socket = mDevice.**createInsecureRfcommSocketToServiceRecord(uuid);**
socket.connect();
更改为使用Insecure调用允许连接工作,我可以从套接字读取调用接收数据。
答案 2 :(得分:0)
另一种可能性 - 作为第二个答案发布,因为它与我的上一个非常不同。
到目前为止,您只提供了您计划在技术上做的事情的信息,而不是您尝试撰写的应用程序的实际目的。
如果你的应用程序的目的不仅仅是蓝牙连接的练习或只是使用特定的条形码阅读器,并且将条形码值放入Android设备只是更大目的的一步 - 你考虑过使用用于该工作的设备相机而不是条形码阅读器?
我相信有些库可以解决这个问题,或者自己编写图像处理代码可能很有趣(我知道现有的应用程序已经开始使用,所以它可能有某种方式或其他方式)
答案 3 :(得分:0)
createInsecureRfcommSocketToServiceRecord
是一个很好的暗示。
我在连接Bluegiga WT32-A蓝牙模块时遇到问题。
我的旧代码基于蓝牙聊天示例(使用BTM 222蓝牙模块可以正常工作)并使用createRfcommSocketToServiceRecord
,连接结果被拒绝:
java.io.IOException: Connection refused
奇怪的是,尝试在短时间内一次又一次地通过createRfcommSocketToServiceRecord
连接确实有效。
需要注意的另一点是:createInsecureRfcommSocketToServiceRecord
的使用需要API级别10。
答案 4 :(得分:0)
我有同样的问题并解决了它。 首先,将条形码扫描仪模式从HID更改为SSP。 HID(人机接口模式)仅适用于硬件键盘模式。
接下来,从输入设备关闭蓝牙硬件。
设置&gt;蓝牙&gt;
使用UUID UUID.fromString(&#34; 00001101-0000-1000-8000-00805F9B34FB&#34)
那就是它。