Java 在Android中使用Socket连接打印表单打印机
我已将插座连接到打印机,但无法打印。 Make Connection类与打印机进行套接字连接并打印 使用方法writeFromInputToOutput。我正在读一个文件,在上面写字 打印机的插座,但打印机上没有打印任何内容 下面是我的代码:Java 在Android中使用Socket连接打印表单打印机,java,android,sockets,printing,Java,Android,Sockets,Printing,我已将插座连接到打印机,但无法打印。 Make Connection类与打印机进行套接字连接并打印 使用方法writeFromInputToOutput。我正在读一个文件,在上面写字 打印机的插座,但打印机上没有打印任何内容 下面是我的代码: class MakeConnection extends AsyncTask<String, Void, String>{ Socket sock = null; OutputStream oStream
class MakeConnection extends AsyncTask<String, Void, String>{
Socket sock = null;
OutputStream oStream = null;
File file;
@Override
protected String doInBackground(String... params) {
try {
sock = new Socket(ipAddress, 9100);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
// Do something
// lollipop and above versions
folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),folderName);
if(!checkPermissions()){
requestPermission();
}
file = new File(folder + "/" + filename /*"/Mypdf/Read.pdf"*/);
}
InputStream is = new FileInputStream(file);
oStream = sock.getOutputStream();
writeFromInputToOutput(sock, is, new DataOutputStream(oStream));
} catch (IOException e) {
e.printStackTrace();
Logger.LogError(TAG, e.toString());
AppToast.showShortToast(mContext, e.toString());
}
return "";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}
public void writeFromInputToOutput(Socket socket,InputStream is, OutputStream os) throws IOException {
byte[] buffer = new byte[10000];
try {
int count = is.read(buffer);
while (count != -1) {
String strindRead = Base64.encodeToString(buffer, 0);
os.write(buffer, 0, count);
os.write("\r\n".getBytes());
os.write("PRINT\r\n".getBytes());
os.write("PRINT\r\n\f".getBytes());
os.flush();
Logger.LogError("STRINGREAD", strindRead);
count = is.read(buffer);
}
}
finally {
is.close();
os.close();
socket.close();
}
}
类MakeConnection扩展了异步任务{
套接字sock=null;
OutputStream oStream=null;
文件;
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
sock=新插座(ipAddress,9100);
if(android.os.Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.M){
//做点什么
//棒棒糖及以上版本
folder=新文件(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载),folderName);
如果(!checkPermissions()){
requestPermission();
}
file=新文件(文件夹+“/”+文件名/*”/Mypdf/Read.pdf“*/);
}
InputStream is=新文件InputStream(文件);
oStream=sock.getOutputStream();
writeFromInputToOutput(sock,is,新数据输出流(oStream));
}捕获(IOE异常){
e、 printStackTrace();
Logger.LogError(标记,例如toString());
showShortToast(mContext,e.toString());
}
返回“”;
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
}
}
public void writeFromInputToOutput(套接字套接字、InputStream is、OutputStream os)引发IOException{
字节[]缓冲区=新字节[10000];
试一试{
int count=is.read(缓冲区);
而(计数!=-1){
strindRead=Base64.encodeToString(缓冲区,0);
写操作(缓冲区,0,计数);
写入(“\r\n”.getBytes());
write(“PRINT\r\n”.getBytes());
write(“PRINT\r\n\f”.getBytes());
os.flush();
Logger.LogError(“STRINGREAD”,strindRead);
计数=is.read(缓冲区);
}
}
最后{
is.close();
os.close();
socket.close();
}
}