API de impresión en Android Galaxy Tab
Pregunta
Me gustaría añadir la impresión inalámbrica a Android 2.2 aplicación que se apunta para la tableta Galaxy. Veo que el navegador de Internet tiene una opción de impresión así que estoy asumiendo que debe existir un gancho de actividad, y esperaba que alguien se ha dado cuenta de esto. He encontrado una posibilidad de uso de la aplicación PrinterShare de Mobile Dynamix, pero mi preferencia sería no requieren una tercera parte.
Aquí está el ejemplo de código que proporcionan, apenas para la referencia.
Intent i = new Intent(Intent.ACTION_VIEW);
i.setPackage("com.dynamixsoftware.printershare");
i.setDataAndType(data_uri, data_type);
startActivity(i);
Donde:
data_uri - URI del objeto a imprimir, como "archivo: ///sdcard/something.pdf" o "contenido: // algo"
data_type - Tipo de Mime. Los siguientes tipos de MIME son compatibles: "Solicitud PDF" "Text / html" "Texto sin formato" "Image / png" "Image / jpeg"
Solución
Impresión sin embargo, no es compatible con Android. Usted tiene que utilizar una solución de 3 ª parte como Mobile Dynamix, HP iPrint para Android o Send2Printer .
Intentos se describen aquí:
Otros consejos
Uso construcción en Servicio PrintManager
private void doWebViewPrint() {
mWebView = new WebView(PrintActivity.this);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
mProgressBar.setVisibility(View.GONE);
createWebPrintJob(view);
mWebView = null;
}
});
mWebView.loadUrl(urlToPrint);
}
protected void createWebPrintJob(WebView webView) {
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
@SuppressWarnings("deprecation")
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
mPrintJob = printManager.print(docName, printAdapter,
new PrintAttributes.Builder().build());
}
Es necesario configurar
urlToPrint = "whatUrlToPrint"
docName = "anyDocumentName";