Print From Android Intent
Print from Android APP
Make a intent to print in the printer number.
Print Image From Android Intent
Send image from your app to pos printer driver
Print image from Android APP
Make a intent to send image to printer
Implement this code to send image URI from your APP
public void sendImageToPrinterNumber(Uri imageUri, int printerId) {
Intent intentPrint = new Intent();
intentPrint.setAction(Intent.ACTION_SEND);
intentPrint.putExtra(Intent.EXTRA_STREAM, imageUri); // Enviar la URI de la imagen
intentPrint.putExtra("device_id", String.valueOf(printerId)); // Enviar el ID de la impresora
intentPrint.putExtra("direct", "1"); // Parametro para enviar directo a la impresora
intentPrint.setType("image/*"); // MIME type para imágenes
// Especificar el paquete de la app de destino
intentPrint.setPackage("com.fidelier.posprinterdriver");
try {
this.startActivity(intentPrint);
} catch (ActivityNotFoundException e) {
Log.e("sendImageToPrinter", "Error: ", e);
// Muestra un mensaje al usuario o maneja la excepción según sea necesario
}
}
To conver your drawable to URL use this code and functions
Uri imageUri;
imageUri = getImageUriFromDrawable(this.getApplicationContext(), R.drawable.pos_printer_driver_demo_big_qr);
public Uri getImageUriFromDrawable(Context context, int drawableId) {
try {
// Crear un archivo temporal
File cacheFile = new File(context.getCacheDir(), "temp_image.png");
cacheFile.createNewFile();
// Obtener el drawable como Bitmap
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), drawableId);
// Guardar el Bitmap en el archivo
FileOutputStream outputStream = new FileOutputStream(cacheFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
outputStream.flush();
outputStream.close();
// Obtener el URI del archivo usando FileProvider
return FileProvider.getUriForFile(context, "com.posprinterdrivertest.fidelier.posprinterdrivertest.fileprovider", cacheFile);
} catch (IOException e) {
Log.e("getImageUriFromDrawable", "Error al crear el archivo URI: " + e.getMessage(), e);
return null;
}
}
Allow sha on path
res/xml/file_paths.xml
<paths> <cache-path name="cache" path="." /> <files-path name="files" path="." /> </paths>Allow provider in manifest
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.posprinterdrivertest.fidelier.posprinterdrivertest.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>