安卓系统中的wifi打印

3

我希望能在我的安卓应用程序中使用wifi打印功能来打印文件。我已经扫描了wifi打印机,拿到了wifi打印机的IP地址。现在,我该如何将文件从安卓手机传输到打印机并打印呢?我正在使用以下代码将文件传输到打印机:

public void uploadFile(File fileName)
     FTPClient client = new FTPClient();
    try {
        client.connect(FTP_HOST,21);
        client.login(FTP_USER, FTP_PASS);
        client.setType(FTPClient.TYPE_BINARY);
        client.changeDirectory("/");
        client.upload(fileName, new MyTransferListener());
    } catch (Exception e) {
        e.printStackTrace();
        try {
            client.disconnect(true);    
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }

}`

有谁能帮我吗?先谢谢了。

2个回答

3

使用Socket,您可以在WIFI连接中使用网络打印机从Android设备打印。

Socket objSocket = new Socket();
String sIP = "192.168.1.10"
String sPort = "9100"
InetSocketAddress objEndPoint = new InetSocketAddress(sIP, Integer.parseInt(sPort));

DataOutputStream objOutputStream;

objSocket.connect(objEndPoint, 3000);

objOutputStream = new DataOutputStream(objSocket.getOutputStream());
objOutputStream.write(("Test Print").getBytes());

objOutputStream.close();
objSocket.close();

请问如何格式化内容,以便像三列和收据一样打印行数。我正在尝试使用 \n\t,但是如果我的任何一个项目包含更多的单词,它会使所有其他项目都错位。 - unkown
我只是想把内容包装起来,怎么做? - unkown
嗨Lenda,只需将字符串变量按行格式化(行数取决于您的页面宽度),并将字符串附加到公共StringBuffer变量中。最后将字符串缓冲区值发送到打印机(如果需要添加打印机命令字符串也附加在字符串缓冲区类中)。示例:String sStr =“这是一个示例文件” ;StringBuffer sbFinalString = new StringBuffer(); sbFinalString.append(sStr); sbFinalString.append("\n\n"); sStr =“由Venkat编写”;sbFinalString.append(sStr); Print(sbFinalString.toString()); 希望这可以帮助... - Venkat
但是将i包装在一列中会有更多的内容。 - unkown

0

我认为你可以不用发送整个文件,只需从文件中提取字符串并与WiFi设备建立连接,将文本发送到设备,它会打印出来。我曾经用蓝牙打印机做过同样的事情。


可以从文件中发送字符串,那么我们需要使用哪种协议?有任何想法吗? - Ramesh Solanki
你可以使用HTTP连接,并使用DataOutputSteam发送字符串。 - Lucifer
我在使用蓝牙配对设备时遇到了问题,你能帮我吗?我已经实现了来自Android开发者网站的代码。 - Ramesh Solanki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接