顧客が食品を購入した後にレシートを印刷するレストラン アプリを開発しています。マネージャーがプリンターの構成に使用する構成画面をアプリに追加しました。管理者はテスト ページを印刷して、正しい 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);
}
}
}
問題は、ネットワーク プリンター (PC に接続されていないスタンドアロン プリンター) で印刷すると、テキストが正しく印刷されることです。ここでは、IP とデフォルトのポート 9100 を使用しています。しかし、PC に接続された共有プリンターに印刷すると、印刷に失敗します。私が間違っているところはどこですか...???