我正在开发一个餐厅应用程序,在客户购买食物后打印收据。我在应用程序中添加了一个配置屏幕,经理用来配置打印机。管理员可以打印一个测试页来测试他是否输入了正确的ip和port。这是我打印测试页的代码:
private class PrintTask extends AsyncTask<Printer, Boolean, String> {
@Override
protected String doInBackground(Printer... params) {
try {
publishProgress(true);
Socket sock = new Socket(params[0].getIp(), Integer.parseInt(params[0].getPort()));
PrintWriter oStream = new PrintWriter(sock.getOutputStream());
oStream.printf("--------------------------------\r\n");
oStream.printf("*** TEST PRINT ***\r\n");
oStream.printf("You have configured your \n\r");
oStream.printf(params[0].getName());
oStream.printf("\r\nprinter successfully\n\r");
oStream.printf("| Thanks |\r\n");
oStream.printf("--------------------------------\r\n");
oStream.close();
sock.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
publishProgress(false);
return "";
}
@Override
protected void onProgressUpdate(Boolean... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
if(!values[0]) {
waitView.setVisibility(View.GONE);
}
else {
waitView.setVisibility(View.VISIBLE);
}
}
}
问题是如果我在网络打印机(没有连接到任何 PC 的独立打印机)上打印,它会正确打印文本。这里我使用的是 ip 和默认端口 9100。但是当我打印到连接到 PC 的共享打印机时,它无法打印。任何想法,我在哪里做错了......???