Android蓝牙打印

我正在写一个将数据发送到蓝牙打印机的应用程序。 谁能帮我 ? 我如何使用android蓝牙堆栈进行打印? 或者是否有任何外部api或sdk使用?

这里是我的代码搜索蓝牙...

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
registerReceiver(ActionFoundReceiver,
        new IntentFilter(BluetoothDevice.ACTION_FOUND));

private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice device = intent
                    .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            btArrayAdapter.add(device.getName() + "n"
                    + device.getAddress());
            btArrayAdapter.notifyDataSetChanged();
        }
    }
};

这里是我的代码发送数据到打印机..

BluetoothDevice mDevice = bluetoothAdapter.getRemoteDevice("00:15:FF:F2:56:A4");
Method m = mDevice.getClass().getMethod("createRfcommSocket",
        new Class[] { int.class });
mBTsocket = (BluetoothSocket) m.invoke(mDevice, 1);
System.out.println("Connecting.....");
mBTsocket.connect();
System.out.println("Connected");
OutputStream os = mBTsocket.getOutputStream();
os.flush();
os.write(Receipt.getBytes());
// mBTsocket.close();

当我写socket.close(),数据不会打印到打印机,因为套接字连接在打印数据之前会关闭。如果我没有写入socket.close(),那么数据只会打印一次..我不会能够第二次打印数据,直到我重新启动手机的蓝牙。

任何一个可以解决它? 或者有没有其他办法摆脱这种打印?


我得到了我的问题的解决方案...

如果我想多次打印数据,那么你不需要用设备创建新的套接字连接...而是调用outputstream.write(字节)方法。

最后如果您想断开设备连接,则调用mBTScoket.close()方法断开设备连接。


如果您已连接到设备并进行配对。

所以打印时,打印机需要该字节。 所以我创造了一个方法。

只需调用此方法并将其内部的字符串传递给打印机。

String str = new String("This is the text sending to the printer");

private void printData() {
    // TODO Auto-generated method stub

    String newline = "n";
    try {
        out.write(str.getBytes(),0,str.getBytes().length);
        Log.i("Log", "One line printed");
    } catch (IOException e) {
        Toast.makeText(BluetoothDemo.this, "catch 1", Toast.LENGTH_LONG).show();
        e.printStackTrace();
        Log.i("Log", "unable to write ");
        flagCheck = false;
    }
    try {
        out.write(newline.getBytes(),0,newline.getBytes().length);
    } catch (IOException e) {        
        Log.i("Log", "Unable to write the new line::");
        e.printStackTrace();
        flagCheck = false;
    }
    flagCheck = true;
}
链接地址: http://www.djcxy.com/p/67947.html

上一篇: Android Bluetooth Printing

下一篇: Remove git corrupt blob from repository