Java 在Android中使用Socket连接打印表单打印机

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

我已将插座连接到打印机,但无法打印。 Make Connection类与打印机进行套接字连接并打印 使用方法writeFromInputToOutput。我正在读一个文件,在上面写字 打印机的插座,但打印机上没有打印任何内容

下面是我的代码:

    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();
}
}