Я разрабатываю приложение для ресторана, которое печатает квитанции после покупок клиентов. Я добавил экран конфигурации в приложении, который менеджер использует для настройки принтеров. Менеджер может распечатать тестовую страницу, чтобы проверить, ввел ли он правильный ip и порт. Вот мой код, который печатает тестовую страницу:Android распечатать текст на принтере
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. Но когда я печатаю на общий принтер, подключенный к ПК, он не распечатывается. Любая идея, где я делаю неправильно ... ???
Вы можете указать, какой принтер вы использовали? Я пробовал этот код на Brother HL-2135W, и он ничего не выводил. – George
Это был принтер HP LaserJet. Вы добавили разрешение доступа к интернету в манифест? –
я сделал. –
George