作为新的android蓝牙连接和打印打印机中的内容。但现在能够用我的Android设备连接到蓝牙打印机。所以,我的项目要求我必须打印pdf文件的内容。以前与同一个项目我能够打印字符串变量内容。
现在随着项目需求的变化,将会有一个pdf文件打印任务。首先我在java中创建带有itext库的pdf用于pdf文件创建。所以,文件创建部分已经完成。我做了什么打印该文件生成pdf文件的字节数组。
这是代码行
FileInputStream fin=new FileInputStream(pdffile);
fileContent=new byte[(int) pdffile.length()];//file content is the byte array for the pdf file.
下一行连接到打印机的蓝牙到Android设备。
mBTAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(PRINTER_MAC_ID);
Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1);
mBTSocket.connect();
使用该套接字(mBTSocket)获取OutputStream。
并将字节数组写入该OutputStream。
os.write(fileContent);
os.flush();
mBTSocket.close();
因此,当我尝试通过蓝牙打印机打印pdf文件内容时,没有任何事情发生,没有异常或应用程序崩溃,但它发出警告 getbluetoothservice()调用没有bluetoothmanagercallback 而不打印内容所以任何人都可以告诉我哪些/哪里我做错了。我也搜索这个主题,但我只有字符串打印但没有文件。 其中一个链接讲述了一些名为StarIOsdk的sdk for android for printing file.And android sdk中的另一个问题是新的打印方法逻辑是在API级别4.4中引入的,但我们将如何处理先前的API级别。这里使用的打印机是蓝牙热敏打印机(小尺寸2,纸张尺寸)。谢谢。
答案 0 :(得分:1)
mBTAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice mdevice = mBTAdapter.getRemoteDevice(PRINTER_MAC_ID);
Method m = mdevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
mBTSocket = (BluetoothSocket) m.invoke(mdevice, 1);
mBTSocket.connect();
Thread.sleep(100);
在Socket Connect之后让线程进入睡眠状态..这对我有用