我想编写一个连接到指定IP地址的网络打印机并进行打印的Android应用程序。
为了进行打印,我知道需要针对特定文件类型编写自己的Postscript,并且通过WIFI连接到网络不是问题。
如何连接到网络打印机?
我想编写一个连接到指定IP地址的网络打印机并进行打印的Android应用程序。
为了进行打印,我知道需要针对特定文件类型编写自己的Postscript,并且通过WIFI连接到网络不是问题。
如何连接到网络打印机?
任何连接到网络的设备都将通过它们的IP和端口/套接字进行通信。通过telnet或socket连接并将数据写入其套接字缓冲区是最简单的方法。
try
{
Socket sock = new Socket("192.168.1.222", 9100);
PrintWriter oStream = new PrintWriter(sock.getOutputStream());
oStream.println("HI,test from Android Device");
oStream.println("\n\n\n");
oStream.close();
sock.close();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
如果打印机支持LPR/LPD,您可能可以使用lpdspooler。如果您能提供有关环境(打印机等)的更多详细信息,我可能能够提供更多信息。
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Star拥有一个Android SDK,其中包含端口发现功能。它可以在您的网络上找到任何一台他们的WiFi收据打印机。http://starmicronics.com/support/SDKDocumentation.aspx
<uses-permission android:name="android.permission.INTERNET"/>
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket sock = new Socket("192.168.1.168", 9100);
PrintWriter oStream = new PrintWriter(sock.getOutputStream());
oStream.println("Hi, test from Android Device");
oStream.println("\n");
oStream.close();
sock.close();
} catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}});
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
private void doPrint() {
// Get a PrintManager instance
PrintManager printManager = (PrintManager) getActivity()
.getSystemService(Context.PRINT_SERVICE);
// Set job name, which will be displayed in the print queue
String jobName = getActivity().getString(R.string.app_name) + " Document";
// Start a print job, passing in a PrintDocumentAdapter implementation
// to handle the generation of a print document
printManager.print(jobName, new MyPrintDocumentAdapter(getActivity()),
null); //
}
好的,您不能直接连接设备,因为您需要安装驱动程序。不过有第三方应用程序,例如Google Cloud打印,可以与Android无缝配合使用。