如何将不需要引脚的蓝牙设备与android配对

时间:2013-12-08 10:24:33

标签: android printing bluetooth

我的Android应用程序需要连接到蓝牙打印机(Zebra Bt打印机)才能打印票证,此打印机 不需要身份验证(设置身份验证:关闭) ,但我无法与它建立连接,因为应用程序要求通过输入一个引脚进行配对,我尝试过默认值,如0000和1234,但其中任何一个都有效。

这是我用来与打印机建立连接的代码:

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

            for (BluetoothDevice device : devices) {
                if (device.getAddress().equals(PRINTER_DEVICE_MAC_ADDRESS)) {

                    bluetoothDevice = bluetoothAdapter.getRemoteDevice(PRINTER_DEVICE_MAC_ADDRESS);
                    if (bluetoothDevice != null) {
                        try {

                            clientSocket = bluetoothDevice.createRfcommSocketToServiceRecord(uuid);
                            clientSocket.connect();

                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                    }
                }

执行以下行时:

clientSocket.connect();

是用于输入引脚以与设备建立连接的对话框,但我不知道要输入什么代码或如何避免此对话框。

- 我在Android 4.1.2上使用Galaxy Tab 3 - 在Api 14开发

1 个答案:

答案 0 :(得分:1)

Zebra提供适用于其打印机的Android SDK。具体来说,有一个BluetoothConnectionInsecure类,允许您连接到您的打印机,而无需提供配对信息:http://www.zebra.com/us/en/products-services/software/link-os/link-os-sdk.html。完整示例包含在JavaDoc中。

如果您不能使用SDK,那么BitBank建议使用CreateInsecureRfCommSocket()是一个不错的选择。以下是一些有关其用法的文章:

http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#createInsecureRfcommSocketToServiceRecord(java.util.UUID)

How to create Insecure RFCOMM Socket in Android?