Reputation: 148
In android, can we add printer plugins inside application memory or there jar file inside asset folder, and try to call it from application, to create mobile printing.
As I find
> Print Share Application option only. Any other way without Google cloud or any cloud printing.
Upvotes: 1
Views: 1708
Reputation: 148
This is working for me,I am passing pdf file to printer it is printing!!
class WifiPrint extends Activity { TextView printer_name, gate_way, printer_port; int port = 9100; WifiManager wifi = null; android.net.DhcpInfo d; String gateway_ip = "";
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wifi_print); wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); printer_name = (TextView) findViewById(R.id.textView1); gate_way = (TextView) findViewById(R.id.textView2); printer_port = (TextView) findViewById(R.id.textView3); /* de.lohndirekt.print.IppPrintService svc = new IppPrintService(printerURI); InputStream stream = new BufferedInputStream(new FileInputStream("image.epl")); DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; Doc myDoc = new SimpleDoc(stream, flavor, null); DocPrintJob job = svc.createPrintJob(); job.print(myDoc, null);*/
}
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.wifi_print, menu); return true; }
public void wifisettings(View v) { startActivityForResult(new Intent( android.provider.Settings.ACTION_WIFI_SETTINGS), 0); }
public void connectSocket(View v) {
/*Uri filepath=Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.pdfsample); Toast.makeText(this, filepath.getPath(), Toast.LENGTH_LONG).show(); */ ClientThread clientThread = new ClientThread(""); Thread clientstartThread = new Thread(clientThread); clientstartThread.start(); }public String intToIp(int i) { return ((i & 0xFF) + "." + ((i >> 8) & 0xFF) + "." + ((i >> 16) & 0xFF) + "." + ((i >> 24) & 0xFF)); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data); if
(requestCode == 0) { WifiInfo wifiinfo = wifi.getConnectionInfo(); d = wifi.getDhcpInfo();
printer_name.setText("Name:" + wifiinfo.getSSID()); gateway_ip =
intToIp(d.gateway); gate_way.setText("Printer Ip:" + gateway_ip); printer_port.setText("Port:" + port);
} }
public File createFileFromInputStream(InputStream inputStream) {
try{ File f = new File("/sdcard/testpdf.pdf"); OutputStream outputStream = new FileOutputStream(f); byte buffer[] = new byte[1024]; int length = 0; while((length=inputStream.read(buffer)) > 0) { outputStream.write(buffer,0,length); } outputStream.close(); inputStream.close(); return f; }catch (IOException e) { //Logging exception } return null; }
class ClientThread implements Runnable { String filepath = ""; BufferedInputStream bis = null; FileInputStream fis;
Socket socket; public ClientThread(String filename) { filepath = filename; } @Override public void run() { // TODO Auto-generated method
stub try {
InputStream in = getResources().openRawResource(R.raw.pdfsample); createFileFromInputStream(in); File pdfFile = new File("/sdcard/testpdf.pdf"); byte[] mybytearray = new byte[(int) pdfFile.length()]; socket = new Socket(gateway_ip, port); runOnUiThread(new Runnable() {
@Override public void run() { // TODO Auto-generated method stub if(socket.isConnected()){ Toast.makeText(WifiPrint.this, "Socket Connected", Toast.LENGTH_LONG).show();
}
} });
fis = new FileInputStream(pdfFile); bis = new BufferedInputStream(fis); bis.read(mybytearray, 0, mybytearray.length); OutputStream os = socket.getOutputStream(); os.write(mybytearray, 0, mybytearray.length); os.flush();if (bis != null) { bis.close(); os.close(); socket.close(); fis.close(); } } catch (final UnknownHostException e) { // TODO Auto-generated catch block runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(WifiPrint.this, "UnHost Exceptions" + e.getMessage(), Toast.LENGTH_LONG).show(); } }); } catch (final IOException e) { // TODO Auto-generated catch block runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText(WifiPrint.this, "Io Exceptions" + e.getMessage(), Toast.LENGTH_LONG).show(); } }); } finally { try { if (bis != null) { bis.close(); socket.close(); fis.close(); } } catch (final IOException e) { // TODO Auto-generated catch block runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Toast.makeText( WifiPrint.this, "Io Exeption in Closing Socket" + e.getMessage(), Toast.LENGTH_LONG) .show(); } }); } } }
}
}
In manifest file : just add:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:name="android.hardware.wifi" />
Upvotes: 1
Reputation:
Yes!!!
In Android 4.4 (API level 19) and higher, the framework provides services for printing images and documents directly from Android applications.
/**
* To print image / photo
*/
private void printPhoto() {
// Get a PrintHelper instance
PrintHelper photoPrinter = new PrintHelper(this);
photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);
// get image from mipmap folder
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
// provide job name (which will be displayed in the print queue) and bitmap
photoPrinter.printBitmap("droids.jpg - test print", bitmap);
}
Reference for print html and custom document
Upvotes: 0