Я разрабатываю приложение для ресторана, которое печатает чеки после того, как клиент покупает продукты. Я добавил экран конфигурации в приложение, которое менеджер использует для настройки принтеров. Менеджер может распечатать тестовую страницу, чтобы проверить, правильно ли он ввел ip и порт. Вот мой код, который печатает тестовую страницу:
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);
}
}
}
Проблема в том, что если я печатаю на сетевом принтере (автономном принтере без подключения к ПК), он печатает текст правильно. Здесь я использую IP-адрес и порт по умолчанию 9100. Но когда я печатаю на общий принтер, подключенный к ПК, он не печатает. Любая идея, где я делаю неправильно...???