小编nav*_*otk的帖子

使用带有android的手持式蓝牙打印机

我有一个蓝牙手持式打印机,我能够使用Mac上的SPP连接进行通信(使用Coolterm).当我试图从Android(使用平台7)做同样的事情时,我遇到了多个问题:

  • 打印机似乎不支持/需要PIN身份验证.当从OSX连接时,我刚刚选择了"不要使用引脚"并且它已配对的选项.在Android中,当我使用时device.createRfcommSocketToServiceRecord(),它总是最终要求我输入PIN /密钥(我没有/不需要).我用反射技巧解决了这个问题:

    Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});
    BluetoothSocket connection = (BluetoothSocket) m.invoke(device, 1);
    
    Run Code Online (Sandbox Code Playgroud)

    我不确定这是否真的有效,但打印机上闪烁的LED指示灯停止闪烁,这让我相信它确实如此.

  • 一旦我有套接字,我尝试使用以下方法将字节数据写入流:

    byte[] buffer = new byte[3];
    buffer[0] = (byte) 0x8A;
    buffer[1] = (byte) 0xC1;
    buffer[2] = (byte) 0x04;
    outStream.write(buffer);
    int response = inStream.read();
    mySocket.close();
    
    Run Code Online (Sandbox Code Playgroud)

    从OSX上的Coolterm发送相同的三字节序列从打印机打印了一个测试页.但是,这似乎使线程挂在Android上(读取).

我在这里错过了什么吗?

编辑:这似乎只有当我将通道设置为1时才有效.这意味着我在这里做点什么.

printing android serial-port bluetooth

37
推荐指数
1
解决办法
6352
查看次数

标签 统计

android ×1

bluetooth ×1

printing ×1

serial-port ×1